首页 > 解决方案 > 使用 filevault-package-maven-plugin 从包中排除节点

问题描述

我有一个内容包,其中包含我想/content/myApp/home在 AEM 6.5 项目中排除的节点。由于某种原因,exclude没有被拾取,并且内容正在被添加到 jcr。我正在使用 AEM 项目构建,mvn clean install -PautoInstallPackage并且 AEM 项目是使用 AEM 原型构建的。

这是我的包裹META-INF/vault/filter.xml

<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
    <filter root="/conf/myApp" mode="merge"/>
    <filter root="/content/myApp">
        <exclude pattern="/content/myApp/home"/>
    </filter>
    <filter root="/content/dam/myApp" mode="merge"/>
    <filter root="/content/experience-fragments/myApp" mode="update"/>
</workspaceFilter>

这是我filevault-package-maven-plugin的定义方式ui.content/pom.xml

<plugin>
    <groupId>org.apache.jackrabbit</groupId>
    <artifactId>filevault-package-maven-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <allowIndexDefinitions>true</allowIndexDefinitions>
        <group>myApp</group>
        <name>myApp.ui.content</name>
        <packageType>content</packageType>
        <accessControlHandling>merge</accessControlHandling>
        <properties>
            <cloudManagerTarget>none</cloudManagerTarget>>
        </properties>
        <dependencies>
            <dependency>
                <groupId>myApp</groupId>
                <artifactId>myApp.ui.apps</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
        <subPackages>
            <subPackage>
                <groupId>com.adobe.acs</groupId>
                <artifactId>acs-aem-commons-content</artifactId>
                <filter>true</filter>
            </subPackage>
        </subPackages>
    </configuration>
</plugin>

以下是父 pom 的声明方式filevault-package-maven-plugin

<plugin>
  <groupId>org.apache.jackrabbit</groupId>
  <artifactId>filevault-package-maven-plugin</artifactId>
  <version>1.0.3</version>
  <configuration>
    <filterSource>src/main/content/META-INF/vault/filter.xml</filterSource>
  </configuration>
</plugin>

道路下的filter.xml生命。src/main/content/META-INF/vault

构建后,我看到节点位于 下/content/myApp/home,这是我不想要的。

标签: javamavenaem

解决方案


根据文档,我最好的猜测是您的排除模式不正确。

文档指出:

include 和 exclude 元素可以作为可选子元素添加到过滤器元素中,以允许在导入和导出期间对子树进行更细粒度的过滤。它们具有强制模式属性,其格式为regexp。正则表达式与相应或潜在 JCR 节点的完整路径匹配,因此它必须以 /(绝对正则表达式)或通配符(相对正则表达式)开头。

您的过滤器目前看起来不像所需的正则表达式

<exclude pattern="/content/myApp/home"/>

您能否尝试以下排除模式

<exclude pattern="/content/myApp/home(.*)"/>

注意(.*)模式末尾的 。另请注意,这将包括/content/myApp/home-automation. 因此,对于您想要的结果,您可能需要更多地更改模式。


推荐阅读