Есть ли способ изменить режим упаковки существующего пакета JCR от замены до обновления? Насколько я знаю, режим упаковки не может быть установлен в диалоговых окнах диспетчера пакетов AEM. Что именно мне нужно было сделать? Просто измените filter.xml и переупаковку? Так или иначе, это не сработало для меня. Я что-то упускаю?Изменить пакетный режим пакета JCR
1
A
ответ
1
Вам необходимо будет изменить filter.xml
, а также .content.xml
в подпапке definition
.
Вот небольшой пакетный файл, который распаковывает, изменяет режим и переупаковывает пакет.
Если вы сохраните его как modPkg, вы Cann называют его с двумя Params:
modPkg FILENAME FITLERMODE
где FILENAME
имя файла пакета и FILTERMODE
должны быть merge
, update
или replace
.
#!/bin/bash
filename=${1}
filterMode=${2}
echo "Extracting package."
jar xf $1
echo "Modifying filter.xml."
perl -pe 's|(root="[^\"]+")(()*mode="[^\"]+"()*)?(()*(/)?>)|\1 mode="'"${filterMode}"'"\5|g' META-INF/vault/filter.xml > META-INF/vault/filter.xml.backup
rm -rf META-INF/vault/filter.xml
mv META-INF/vault/filter.xml.backup META-INF/vault/filter.xml
echo "Modifying .content.xml in definition-folder."
perl -pe 's|mode="[^\"]+"|mode="'"${filterMode}"'"|g' META-INF/vault/definition/.content.xml > META-INF/vault/definition/.content.xml.backup
rm -rf META-INF/vault/definition/.content.xml
mv META-INF/vault/definition/.content.xml.backup META-INF/vault/definition/.content.xml
echo "Repackaging."
jar -cfM ${filterMode}-${filename} META-INF jcr_root
echo "Deleting temp files."
rm -rf META-INF
rm -rf jcr_root
echo "Finished."
Возможно, будут более элегантные способы выполнения этой работы, но это достаточно легко.
Большое спасибо за помощь и скрипт, весьма полезный :) –