Adobe Content Package Maven Plugin

使用Adobe Content Package Maven插件将包部署和管理任务集成到您的Maven项目中。

将构建的包部署到AEM由Adobe Content Package Maven插件执行,并实现了通常使用AEM Package Manager执行的任务的自动化:

  • 从文件系统中的文件创建新包。
  • 在AEM上安装和卸载包。
  • 构建已在AEM上定义的包。
  • 获取安装在AEM上的包的列表。
  • 从AEM中删除包。

此文档详细介绍了如何使用Maven管理这些任务。 但是,了解AEM项目及其包的结构方式也很重要。

注意

包创建现在归Apache Jackrabbit FileVault Package Maven plugin所有。 将构建的包部署到AEM由Adobe Content Package Maven插件执行,如此处所述。

包和AEM项目结构

AEM作为Cloud Service,遵循由最新的AEM Project Archetype实施的包管理和项目结构的最新最佳实践。

小贴士

有关更多详细信息,请参阅AEM中的AEM项目结构文章作为Cloud Service文档以及AEM Project Archetype文档。 这两种工具都完全支持AEM 6.5。

获取内容包Maven插件

该插件可从Maven Central Repository中访问。

内容包Maven插件目标和参数

要使用内容包Maven插件,请在POM文件的构建元素中添加以下插件元素:

<plugin>
 <groupId>com.day.jcr.vault</groupId>
 <artifactId>content-package-maven-plugin</artifactId>
 <version>0.0.24</version>
 <configuration>
       <!-- parameters and values common to all goals, as required -->
 </configuration>
</plugin>

要启用Maven下载插件,请使用本页获取内容包Maven Plugin部分中提供的用户档案。

内容包Maven插件的目标

“内容包”插件提供的目标和目标参数在后面几节中有介绍。 在“常用参数”部分中描述的参数可用于大多数目标。 适用于一个目标的参数在该目标的一节中进行了说明。

插件前缀

插件前缀为content-package。 使用此前缀从命令行执行目标,如下例所示:

mvn content-package:build

参数前缀

除非另有说明,否则插件目标和参数使用vault前缀,如下例所示:

mvn content-package:install -Dvault.targetURL="https://192.168.1.100:4502/crx/packmgr/service.jsp"

代理

使用AEM代理的目标使用在Maven设置中找到的第一个有效代理配置。 如果未找到代理配置,则不使用代理。 请参见 Common Parameters部分中的useProxy参数。

常见参数

下表中的参数对所有目标都是通用的,但​目标​列中指出的除外。

名称 类型 必填 默认值 描述 目标
failOnError boolean false 如果值true,则当发生错误时,生成将失败。 值false会导致生成忽略该错误。 package之外的所有目标
name String build:是, install:不, rm:是 build:无默认值, install:Maven项目 artifactId 的属性值 要执行操作的包的名称 ls之外的所有目标
password String admin 用于与AEM进行身份验证的密码 package之外的所有目标
serverId String 要从中检索用户名和密码以进行身份验证的服务器ID package之外的所有目标
targetURL String http://localhost:4502/crx/packmgr/service.jsp AEM包管理器的HTTP服务API的URL package之外的所有目标
timeout int 5 与包管理器服务通信的连接超时(以秒为单位) package之外的所有目标
useProxy boolean true true使Maven使用找到的第一个活动代理配置,以便将请求代理到包管理器。 package之外的所有目标
userId String admin 要使用AEM进行身份验证的用户名 package之外的所有目标
verbose boolean false 启用或禁用详细日志记录 package之外的所有目标

生成

构建已在AEM实例上定义的内容包。

注意

无需在Maven项目内执行此目标。

参数

构建目标的所有参数在公用参数部分中均有介绍。

安装

在存储库中安装包。 执行此目标不需要Maven项目。 该目标将绑定到Maven构建生命周期的install阶段。

参数

除以下参数外,请参阅Common Parameters部分中的说明。

名称 类型 必填 默认值 描述
artifact String Maven项目的artifactId属性的值 表单groupId:artifactId:version[:packaging]的字符串
artifactId String 要安装的对象的ID
groupId String 要安装的对象的groupId
install boolean true 确定是否在包上载时自动解压缩
localRepository org.apache.maven.artifact.repository.ArtifactRepository localRepository系统变量的值 无法使用插件配置配置的本地Maven存储库,因为始终使用系统属性
packageFile java.io.File 为Maven项目定义的主对象 要安装的包文件的名称
packaging String zip 要安装的对象的打包类型
pomRemoteRepositories java.util.List 为Maven项目定义的remoteArtifactRepositories属性的值 无法使用插件配置配置此值,必须在项目中指定此值。
project org.apache.maven.project.MavenProject 为其配置插件的项目 由于项目包含插件配置而隐式的Maven项目
repositoryId (POM)、( repoID 命令行) String temp 从中检索对象的存储库的ID
repositoryUrl (POM)、( repoURL 命令行) String 从中检索对象的存储库的URL
版本 字符串 要安装的对象的版本

ls

列表部署到包管理器的包。

参数

ls目标的所有参数在公用参数部分中均有介绍。

rm

从包管理器中删除包。

参数

公用参数部分介绍了rm目标的所有参数。

卸载

卸载包。 软件包将保留在已卸载状态的服务器上。

参数

常见参数部分介绍了卸载目标的所有参数。

创建内容包。 包目标的默认配置包括保存已编译文件的目录的内容。 执行包目标需要编译构建阶段已完成。 包目标绑定到Maven构建生命周期的包阶段。

参数

除以下参数外,请参阅Common Parameters部分中name参数的说明。

名称 类型 必填 默认值 描述
archive org.apache.maven.archiver.MavenArchiveConfiguration 要使用的存档配置
builtContentDirectory java.io.File Maven内部版本的输出目录的值 包含要包含在包中的内容的目录
dependencies java.util.List
embeddedTarget java.lang.String
embeddeds java.util.List
failOnMissingEmbed boolean false 如果值true,则当在项目依赖关系中找不到嵌入的项目时,生成将失败。 值false会导致生成忽略此类错误。
filterSource java.io.File 此参数定义一个指定工作区过滤器源的文件。 在配置中指定并通过嵌入或子包注入的过滤器与文件内容合并。
filters com.day.jcr.vault.maven.pack.impl.DefaultWorkspaceFilter 此参数包含定义包内容的筛选器元素。 执行过滤器时,这些文件将包含在filter.xml文件中。 请参阅下面的使用过滤器部分。
finalName java.lang.String 在Maven项目(构建阶段)中定义的finalName 生成的包ZIP文件的名称,不带.zip文件扩展名
group java.lang.String 在Maven项目中定义的groupID 作为内容包目标安装路径一部分的生成内容包的groupId
outputDirectory java.io.File Maven项目中定义的生成目录 保存内容包的本地目录
prefix java.lang.String
project org.apache.maven.project.MavenProject Maven项目
properties java.util.Map 这些参数定义了可在properties.xml文件中设置的其他属性。 这些属性无法覆盖以下预定义属性:group(使用group参数设置)、name(使用name参数设置)、version(使用version参数设置)、description(从项目描述设置)、groupId(Maven项目描述符的groupId)、artifactIdartifactIdMaven项目描述符)、dependencies(使用dependencies参数设置)、createdByuser.name系统属性的值)、created(当前系统时间)、requiresRoot(使用requiresRoot参数设置)、packagePath(自动从组和包名称生成)
requiresRoot boolean false 定义包是否需要根。 这将成为properties.xml文件的requiresRoot属性。
subPackages java.util.List
version java.lang.String 在Maven项目中定义的版本 内容包的版本
workDirectory java.io.File 在Maven项目(构建阶段)中定义的目录 包含要包含在包中的内容的目录

使用过滤器

使用“过滤器”元素定义包内容。 过滤器将添加到包META-INF/vault/filter.xml文件中的workspaceFilter元素。

下面的过滤器示例显示了要使用的XML结构:

<filter>
   <root>/apps/myapp</root>
   <mode>merge</mode>
       <includes>
              <include>/apps/myapp/install/</include>
              <include>/apps/myapp/components</include>
       </includes>
       <excludes>
              <exclude>/apps/myapp/config/*</exclude>
       </excludes>
</filter>
导入模式

mode元素定义导入包时,存储库如何受到影响。 可以使用以下值:

  • 合并: 将添加包中尚未在存储库中的内容。包和存储库中的内容保持不变。 不会从存储库中删除任何内容。
  • 替换: 不在存储库中的包中的内容将添加到存储库。存储库中的内容将替换为包中的匹配内容。 当内容在包中不存在时,内容将从存储库中删除。
  • 更新: 不在存储库中的包中的内容将添加到存储库。存储库中的内容将替换为包中的匹配内容。 现有内容会从存储库中删除。

当滤镜不包含mode元素时,将使用默认值replace

帮助

参数

名称 类型 必填 默认值 描述
detail boolean false 确定是否显示每个目标的所有可设置属性
goal String 此参数定义要向其显示帮助的目标名称。 如果未指定任何值,则显示所有目标的帮助。
indentSize int 2 用于每个级别缩进的空格数(如果定义,则必须为正)
lineLength int 80 显示线的最大长度(如果定义,必须为正)

在包中包括缩略图图像或属性文件

替换默认包配置文件以自定义包属性。 例如,包含缩略图图像以区分包管理器和包共享中的包。

源文件可位于文件系统中的任意位置。 在POM文件中,定义构建资源以将源文件复制到target/vault-work/META-INF中以包含在包中。

以下POM代码将项目源的META-INF文件夹中的文件添加到包中:

<build>
    <resources>
        <!-- vault META-INF resources (thumbnail etc.) -->
        <resource>
            <directory>${basedir}/src/main/content/META-INF</directory>
            <targetPath>../vault-work/META-INF</targetPath>
        </resource>
    </resources>
</build>

以下POM代码只向包中添加缩略图。 缩略图图像必须名为thumbnail.png,并且必须位于包的META-INF/vault/definition文件夹中。 在此示例中,源文件位于项目的/src/main/content/META-INF/vault/definition文件夹中:

<build>
    <resources>
        <!-- thumbnail only -->
        <resource>
            <directory>${basedir}/src/main/content/META-INF/vault/definition</directory>
            <targetPath>../vault-work/META-INF/vault/definition</targetPath>
        </resource>
    </resources>
</build>

使用AEM Project Archetype生成AEM Projects

最新的AEM Project Archetype为内部部署和AMS实施实施了最佳实践包结构,建议用于所有AEM项目。

小贴士

有关更多详细信息,请参阅AEM中的AEM项目结构文章作为Cloud Service文档以及AEM Project Archetype文档。 这两种工具都完全支持AEM 6.5。

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now