如何通过 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.html
和
https://jackrabbit.apache.org/filevault/apidocs/org/apache/jackrabbit/vault/fs/io/AccessControlHandling.html
content-package-maven-plugin 仅提供对所有包设置的访问。
自从 Adobe content-package-maven-plugin
的 1.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
我通过为每个文件添加 _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.html 和 https://jackrabbit.apache.org/filevault/apidocs/org/apache/jackrabbit/vault/fs/io/AccessControlHandling.html
content-package-maven-plugin 仅提供对所有包设置的访问。
自从 Adobe content-package-maven-plugin
的 1.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