Aem 更改JCR包的包模式

Aem 更改JCR包的包模式,aem,jcr,Aem,Jcr,有没有办法将现有JCR包的打包模式从替换更改为更新?据我所知,无法在AEM Package Manager对话框中设置打包模式。 我到底要做什么?只需更改filter.xml并重新打包?不知怎么的,这对我不起作用。我遗漏了什么吗?您必须更改定义子文件夹中的过滤器.xml以及内容.xml 下面是一个小的批处理脚本,用于解包、更改模式和重新打包包 如果将其另存为modPkg,则可以使用两个参数调用它: modPkg FILENAME FITLERMODE 其中,FILENAME是包的文件名,FIL

有没有办法将现有JCR包的打包模式从替换更改为更新?据我所知,无法在AEM Package Manager对话框中设置打包模式。
我到底要做什么?只需更改filter.xml并重新打包?不知怎么的,这对我不起作用。我遗漏了什么吗?

您必须更改
定义
子文件夹中的
过滤器.xml
以及
内容.xml

下面是一个小的批处理脚本,用于解包、更改模式和重新打包包

如果将其另存为modPkg,则可以使用两个参数调用它:

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

可能有更优雅的方法来完成这项工作,但这很简单。

非常感谢您的帮助和脚本,非常有用:)