AEM - vault -package filter.xml query



在我的应用程序包filter.xml中,我给出了如下:

<filter root="/apps/site">
<include pattern="/apps/site/components"/>
<include pattern="/apps/site/config"/>
<include pattern="/apps/site/config(.*)?"/>
<include pattern="/apps/site/install"/>
<include pattern="/apps/site/pages"/>
<include pattern="/apps/site/templates"/>    
</filter>

使用上面的代码,当我部署包时,创建的任何新文件夹/文件都将在crxde中更新任何现有的html文件更改都将在crxde中更新但是对组件dialog.xml的更改在crxde中没有得到更新(为了解释,我直接在crxde中的一个组件对话框中进行更改,然后部署我的包。我所做的更改没有从我的代码库中得到预期,这就是问题所在(

因此,我将下面的模式也添加到filter.xml中,它就可以工作了。

<include pattern="/apps/site/components(/.*)"/>

如果我们需要在过滤器中同时包含以下两种模式,或者我们有其他方法,有人能帮我吗?

<include pattern="/apps/site/components"/>
<include pattern="/apps/site/components(/.*)"/>

您观察到的行为是由于向后兼容性。当还没有合并模式时,行为是这样的:使用替换模式安装与筛选器匹配的节点,使用合并模式安装其他所有节点(仅添加新内容(。

所以对于这样的过滤器:

<filter root="/apps/site">
<include pattern="/apps/site/components"/>
</filter>

/apps/site/components以下包中的所有内容都是使用合并模式安装的,因为末尾没有通配符。

如果您将过滤器更改为:

<filter root="/apps/site">
<include pattern="/apps/site/components"/>
<include pattern="/apps/site/components(/.*)"/>
</filter>

然后它也匹配下面的节点,所以包安装程序使用替换模式。

为了简单起见,可以使用componentsinstallconfig等作为过滤根,即

<filter root="/apps/site/components">
<filter root="/apps/site/config">
<filter root="/apps/site/install">

等等

这样,每次安装包时都会替换以/apps/site/components开头的树,并且不需要include语句。

更新:includeexclude模式是一个很好的实践,当您的包将在树的不完全拥有的部分中安装东西时;在您的情况下,如果有另一个包也在/apps/site中安装内容。

最新更新