更改JCR包的包模式

时间:2016-07-21 13:30:02

标签: aem jcr

有没有办法将现有JCR包的包装模式从替换更改为更新?据我所知,无法在AEM包管理器对话框中设置打包模式。 我究竟要做什么?只需更改filter.xml并重新打包?不知何故,这对我不起作用。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您必须更改filter.xml子文件夹中的.content.xml以及definition

这是一个小的batchscript,它解压缩,更改模式并重新打包。

如果你把它保存为 modPkg ,你可以用两个参数调用它:

modPkg FILENAME FITLERMODE

其中FILENAME是包的文件名,FILTERMODE应为mergeupdatereplace

#!/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."

可能有更优雅的方式来完成这项工作,但这很容易。