使用Adobe Content Package Maven增效模組,將套件部署與管理工作整合至您的Maven專案。
將已建構的封裝部署至AEM是由Adobe Content Package Maven增效模組執行,並可自動執行通常使用AEM Package Manager執行的工作:
本檔案詳細說明如何使用Maven來管理這些工作。 但是,請務必瞭解AEM專案及其套件的結構。
軟體包建立現在由Apache Jackrabbit FileVault Package Maven plugin擁有。 將已建構的封裝部署至AEM是由Adobe Content Package Maven外掛程式執行,如此處所述。
AEM 6.5遵循封裝管理和專案結構的最新最佳實務,由最新的AEM Project Archetype實作,適用於內部和AMS實作。
如需詳細資訊,請參閱AEM中的AEM Project Structure文章,作為雲端服務檔案,以及AEM Project Archetype檔案。 這兩者都完全支援AEM 6.5。
插件可從Maven Central Repository獲得。
要使用Content Package Maven Plugin,請在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外掛程式區段中提供的描述檔。
「內容套件」外掛程式提供的目標和目標參數在後面的章節中有說明。 「常用參數」(Common Parameters)部分中描述的參數可用於大多數目標。 適用於一個目標的參數在該目標的一節中有說明。
外掛程式首碼為content-package
。 使用此前置詞從命令行執行目標,如下例所示:
mvn content-package:build
除非另有說明,否則外掛程式目標和參數會使用vault
首碼,如下列範例所示:
mvn content-package:install -Dvault.targetURL="https://192.168.1.100:4502/crx/packmgr/service.jsp"
使用AEM之Proxy的目標會使用Maven設定中找到的第一個有效的Proxy設定。 如果未找到代理配置,則不使用代理。 請參閱Common Parameters部分中的useProxy
參數。
下表中的參數是所有目標的通用參數,但Goals欄中注明的除外。
名稱 | 類型 | 必要 | 預設值 | 說明 | 目標 |
---|---|---|---|---|---|
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目標的所有參數。
從包管理器中刪除包。
公共參數部分介紹了rm目標的所有參數。
卸載軟體包。 該軟體包仍處於卸載狀態。
卸載目標的所有參數都在Common Parameters部分中介紹。
建立內容套件。 軟體包目標的預設配置包括保存已編譯檔案的目錄的內容。 執行軟體包目標需要編譯構建階段完成。 軟體包目標綁定到Maven構建生命週期的軟體包階段。
除了下列參數外,請參閱公共參數部分中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 )、artifactId (artifactId Maven項目描述符)、dependencies (使用dependencies 參數來設定)、createdBy (user.name 系統屬性的值)、created (當前系統時間)、requiresRoot (使用requiresRoot 參數來設定)、packagePath (自動從組和包名稱生成) |
requiresRoot |
boolean |
是 | false | 定義軟體包是否需要root。 這會成為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會針對內部實作和AMS實作實作實作最佳實作套件結構,而且建議用於所有AEM專案。
如需詳細資訊,請參閱AEM中的AEM Project Structure文章,作為雲端服務檔案,以及AEM Project Archetype檔案。 這兩者都完全支援AEM 6.5。