【问题标题】:Exclude filter not working for filevault-package-maven-plugin排除过滤器不适用于 filevault-package-maven-plugin
【发布时间】:2020-04-09 00:39:22
【问题描述】:

我有一个内容包,其中包含在 AEM 6.5 上安装此包时要排除的节点。排除配置在 filter.xml (META-INF/vault/filter.xml) 中定义。

下面是我的 filter.xml 的表示

<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
    <filter root="/apps/amzn-biz">
        <exclude pattern="/apps/amzn-biz/i18n(.*)"/>
    </filter>
    <filter root="/apps/sling"/>
</workspaceFilter>

我的 pom.xml 有以下配置

<!-- ====================================================================== -->
            <!-- V A U L T   P A C K A G E   P L U G I N S                              -->
            <!-- ====================================================================== -->
            <plugin>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>filevault-package-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <group>amzn-biz</group>
                    <acHandling>merge_preserve</acHandling>
                    <packageType>content</packageType>
                    <embeddeds>
                        <embedded>
                            <groupId>com.amazon.business</groupId>
                            <artifactId>amzn-biz-foundation.core</artifactId>
                            <target>/apps/amzn-biz/install</target>
                        </embedded>
                    </embeddeds>
                    <subPackages>
                        <subPackage>
                            <groupId>com.adobe.cq</groupId>
                            <artifactId>core.wcm.components.all</artifactId>
                            <filter>true</filter>
                        </subPackage>
                        <subPackage>
                            <groupId>com.adobe.cq</groupId>
                            <artifactId>core.wcm.components.examples</artifactId>
                            <filter>true</filter>
                        </subPackage>
                    </subPackages>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.day.jcr.vault</groupId>
                <artifactId>content-package-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <verbose>true</verbose>
                    <failOnError>true</failOnError>
                </configuration>
            </plugin>

我尝试了多种方法,将我的排除模式更改为 ./i18n。 但它对我不起作用。

我也尝试将 filterSource 添加到 filevault-package-maven-plugin 配置,但随后我收到错误 Project contains filter.xml in META-INF/vault but also specified an filter source.

【问题讨论】:

  • 你解决了吗?我尝试了不同的规则,但没有运气,i18n 仍在 ui.apps 内容包中!

标签: adobe aem


【解决方案1】:

您必须从内容包中删除节点。您的内容包中不应包含任何未明确包含在过滤规则中的内容。

您的问题是奇怪的向后兼容性。至少在 CQ5 中还没有过滤模式 (mode="replace|merge|update")。在那些日子里,规则是过滤规则涵盖的所有内容都被替换。所有其他内容被合并。当过滤器模式被引入时,它们变得不直观但向后兼容。在您的情况下, i18n 文件夹已合并。

经验法则:再次导入和导出的内容包应该是相同的。(您不会这样)

有关详细信息,请参阅https://jackrabbit.apache.org/filevault/filter.html#Usage_for_Import.2FInstallation 的表格以获取更多信息。对于您的 i18n 文件夹,它说:

覆盖规则的祖先节点:从内容包中反序列化(出于向后兼容性的原因),节点是 不覆盖规则的祖先:不碰。一个不应该依赖 这种行为,即内容包中的所有项目都应该始终是 被一些过滤规则覆盖以使行为更加明确。

【讨论】:

  • 没看懂,所以,唯一的办法就是删除本地的i18n?我想在开发阶段保留它作为备份,之后它将被取消版本化。
【解决方案2】:

问题可能与 content 而不是 filter.xml 有关。这种类型不能有子包也不能嵌入包。如果项目需要 ,使用 mixed 将减少意外构建和安装行为的机会。

包类型和行为列表如下:

  • 应用程序:包包含纯应用程序内容(又名/apps/*)。不包含任何子包或 OSGi 配置或捆绑包。
  • 内容:包仅包含内容和用户定义的配置。不包含任何子包或 OSGi 配置或捆绑包。
  • 容器:包仅包含子包和 OSGi 配置和捆绑包。
  • 混合:捕获以上所有类型的组合。

更多详情请关注http://jackrabbit.apache.org/filevault-package-maven-plugin/generate-metadata-mojo.html#packageType

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 2017-04-07
    • 2016-06-05
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2016-08-13
    相关资源
    最近更新 更多