2016-07-21 3 views
1

Есть ли способ изменить режим упаковки существующего пакета JCR от замены до обновления? Насколько я знаю, режим упаковки не может быть установлен в диалоговых окнах диспетчера пакетов AEM. Что именно мне нужно было сделать? Просто измените filter.xml и переупаковку? Так или иначе, это не сработало для меня. Я что-то упускаю?Изменить пакетный режим пакета JCR

ответ

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." 

Возможно, будут более элегантные способы выполнения этой работы, но это достаточно легко.

+0

Большое спасибо за помощь и скрипт, весьма полезный :) –