更改 JCR 包的包模式

Change package mode of JCR Package

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

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

这是一个小的批处理脚本,可以解包、更改模式并重新打包一个包。

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

modPkg FILENAME FITLERMODE

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

#!/bin/bash
filename=
filterMode=
echo "Extracting package."
jar xf 
echo "Modifying filter.xml."
perl -pe 's|(root="[^\"]+")(( )*mode="[^\"]+"( )*)?(( )*(/)?>)| mode="'"${filterMode}"'"|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."

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