パッケージデプロイメントおよび管理タスクを Maven プロジェクトに組み込むには、Adobe Content Package Maven プラグインを使用します。
構築したパッケージは Adobe Content Package Maven プラグインによって AEM にデプロイされ、通常 AEM Package Manager: を使って実行するタスクの自動化を可能にします。
このドキュメントでは、Maven を使用してこれらのタスクを管理する方法について詳しく説明します。また一方、AEM プロジェクトとそのパッケージの構造を理解することも重要です。
パッケージの作成は、Apache Jackrabbit FileVault Package Maven プラグインで管理されるようになりました。
content-package-maven-plugin
は、リリース 1.0.2 以降、パッケージ化をサポートしなくなりました。AEM as a Cloud Service は、最新の AEM プロジェクトアーキタイプによって実装された、パッケージ管理とプロジェクト構造に関する最新のベストプラクティスに従っています。
詳しくは、AEM as a Cloud Service のドキュメントの AEM プロジェクトの構造 と、 AEM プロジェクトアーキタイプ のドキュメントを参照してください。どちらも AEM 6.5 に完全に対応しています。
このプラグインは Maven Central リポジトリーから入手できます。
Content Package Maven Plugin を使用するには、POM ファイルの build 要素内に次のプラグイン要素を追加します。
<plugin>
<groupId>com.day.jcr.vault</groupId>
<artifactId>content-package-maven-plugin</artifactId>
<version>1.0.4</version>
<configuration>
<!-- parameters and values common to all goals, as required -->
</configuration>
</plugin>
Maven がプラグインをダウンロードできるようにするには、 Content Package Maven プラグインの取得 」セクションに表示されます。
Content Package プラグインが提供する目標と目標のパラメーターは、以降の節で説明します。 共通パラメーターの節で説明したパラメーターは、ほとんどの目標に使用できます。 1 つの目標に適用されるパラメーターについては、その目標の「 」セクションで説明します。
プラグインプレフィックスは 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 設定で最初に見つかった有効なプロキシ設定を使用します。プロキシ設定が見つからない場合、プロキシは使用されません。共通パラメーターの節の 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 プロジェクト内でこのゴールを実行する必要はありません。
build ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。
リポジトリー内のパッケージをインストールします。このゴールの実行に Maven プロジェクトは不要です。このゴールは Maven のビルドライフサイクルの install
フェーズにバインドされます。
以下のパラメーターに加えて、 共通パラメーター の説明も参照してください。
名前 | 型 | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
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 |
version | 文字列 | いいえ | なし | インストールするアーティファクトのバージョン |
パッケージマネージャー にデプロイされているパッケージを一覧表示します。
ls ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。
パッケージマネージャー からパッケージを削除します。
rm ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。
パッケージをアンインストールします。 パッケージは、アンインストールされた状態でサーバーに残ります。
uninstall ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。
コンテンツパッケージを作成します。package ゴールのデフォルト設定には、コンパイルしたファイルを保存するディレクトリの内容が含まれます。package ゴールを実行するには、compile build フェーズを完了しておく必要があります。package ゴールは Maven のビルドライフサイクルの package フェーズにバインドされます。
以下のパラメーターに加えて、 共通パラメーター の 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 |
いいえ | なし | パラメーターワークスペースフィルターのソースを指定するファイルを定義します。設定で指定され、embeddeds または subpackages を使用して挿入されるフィルターはファイル内容と結合されます。 |
filters |
com.day.jcr.vault.maven.pack.impl.DefaultWorkspaceFilter |
いいえ | なし | パッケージ内容を定義するフィルター要素を格納します。実行すると、filter.xml ファイルにフィルターが追加されます。以下の フィルターの使用 の節を参照してください。 |
finalName |
java.lang.String |
はい | Maven プロジェクト(build フェーズ)で定義される 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 (Maven プロジェクト記述子の artifactId )、dependencies (dependencies パラメーターを使用して設定)、createdBy (システムプロパティ user.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 プロジェクト(build フェーズ)で定義されるディレクトリ | パッケージに含める内容を格納するディレクトリ |
パッケージ内容を定義するには、フィルター要素を使用します。フィルターはパッケージの 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 コードでは、1 つのサムネール画像だけをパッケージに追加します。サムネール画像の名前を 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 プロジェクトアーキタイプでは、オンプレミス実装でも AMS 実装でも、ベストプラクティスに従ったパッケージ構造を実装しているので、すべての AEM プロジェクトにこのプロジェクトアーキタイプを使用することをお勧めします。
詳しくは、AEM as a Cloud Service のドキュメントの AEM プロジェクトの構造 と、 AEM プロジェクトアーキタイプ のドキュメントを参照してください。どちらも AEM 6.5 に完全に対応しています。