如何通过 Maven 部署 rep:policy 个文件?

How to deploy rep:policy files via maven?

我通过为每个文件添加 _rep_policy.xml 文件向 /home/groups 和 /home/users 添加了一些额外的 ACL,但似乎无法部署它们。我将以下行添加到我的保险库 filter.xml

<filter root="/home/users/rep:policy" mode="replace"/>
<filter root="/home/groups/rep:policy" mode="replace"/>

两者都有这样的内容:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
    jcr:primaryType="rep:ACL">
    <allow
        jcr:primaryType="rep:GrantACE"
        rep:principalName="everyone"
        rep:privileges="{Name}[jcr:read]"/>
</jcr:root>

但是当我 运行 maven 时,我可以看到它们周围的所有东西都已部署,但不是这两个。如果我尝试通过包管理器直接安装包,只有当我将访问控制处理设置为 "Replace" 时它才有效。我不知道如何在 maven 中配置它。

包属性在 POM 的 vault 插件的配置部分配置。要在包中启用 ACL 导入,请将以下配置添加到 POM

<configuration>
        <properties>
             <acHandling>Overwrite</acHandling>
        </properties>
</configuration>

保险库插件的文档位于 http://docs.adobe.com/docs/en/cq/5-6-1/core/how_to/how_to_use_the_vlttool/vlt-mavenplugin.html

所以这是一劳永逸的正确回答...更新你的 pom 构建插件 "com.day.jcr.vault":

<plugin>
    <groupId>com.day.jcr.vault</groupId>
    <artifactId>content-package-maven-plugin</artifactId>
    <version>0.0.24</version>
    <extensions>true</extensions>
    <configuration>
        <failOnError>true</failOnError>
        <username>${crx.username}</username>
        <password>${crx.password}</password>
        <properties>
            <acHandling>merge_preserve</acHandling>
        </properties>
    </configuration>
</plugin>

ac处理选项: - 忽视 - 覆盖 - 合并 - merge_preserve - 清除

小补:

acHandling 选项没有记录在 maven 插件中,而是记录在 aem 和 jackrabbit 包文档中

https://docs.adobe.com/docs/en/aem/6-2/administer/content/package-manager.htmlhttps://jackrabbit.apache.org/filevault/apidocs/org/apache/jackrabbit/vault/fs/io/AccessControlHandling.html

content-package-maven-plugin 仅提供对所有包设置的访问。

自从 Adob​​e content-package-maven-plugin1.0.2 版本更新后,所有内容打包功能都被删除并添加到 org.apache.jackrabbit filevault-package-maven-plugin

acHandling 配置将不再适用于 content-package-maven-plugin,而是需要添加到 filevault-package-maven-plugin

<plugin>
    <groupId>org.apache.jackrabbit</groupId>
    <artifactId>filevault-package-maven-plugin</artifactId>
    <version>1.0.3</version>
    <extensions>true</extensions>
    <configuration>
        <embeddeds>
            <embedded>
                <groupId>com.company</groupId>
                <artifactId>company.core</artifactId>
                <target>/apps/company/install</target>
            </embedded>
        </embeddeds>

        <!-- NEW LOCATION -->
        <properties>
            <acHandling>merge_preserve</acHandling>
        </properties>
        <!-- /NEW LOCATION -->

    </configuration>
</plugin>
<plugin>
    <groupId>com.day.jcr.vault</groupId>
    <artifactId>content-package-maven-plugin</artifactId>
    <version>1.0.2</version>
    <extensions>true</extensions>
    <configuration>
        <verbose>true</verbose>
        <failOnError>true</failOnError>
        <group>company.aem</group>
    </configuration>
</plugin>

如需完整的迁移指南,请访问 Jackrabbit documentation