Adobe Content Package Maven Plugin

パッケージデプロイメントおよび管理タスクを Maven プロジェクトに組み込むには、Adobe Content Package Maven プラグインを使用します。

構築したパッケージは Adobe Content Package Maven プラグインによって AEM にデプロイされ、通常 AEM Package Manager: を使って実行するタスクの自動化を可能にします。

  • ファイルシステム内のファイルから新しいパッケージを作成する。
  • AEM にパッケージをインストールまたはアンインストールする。
  • AEM で定義済みのパッケージをビルドする。
  • AEM にインストールされているパッケージのリストを取得する。
  • AEM からパッケージを削除する。

このドキュメントでは、Maven を使用してこれらのタスクを管理する方法について詳しく説明します。また一方、AEM プロジェクトとそのパッケージの構造を理解することも重要です。

メモ

パッケージの​作成​は、Apache Jackrabbit FileVault Package Maven プラグインで管理されるようになりました。

  • content-package-maven-plugin は、リリース 1.0.2 以降、パッケージ化をサポートしなくなりました。
  • この記事では、構築済みパッケージの AEM への​デプロイメント​を、Adobe Content Package Maven プラグインで実行する方法について説明します。

パッケージと AEM プロジェクト構造

AEM as a Cloud Service は、最新の AEM プロジェクトアーキタイプによって実装された、パッケージ管理とプロジェクト構造に関する最新のベストプラクティスに従っています。

ヒント

詳しくは、AEM as a Cloud Service のドキュメントの AEM プロジェクトの構造 と、 AEM プロジェクトアーキタイプ のドキュメントを参照してください。どちらも AEM 6.5 に完全に対応しています。

Content Package Maven Plugin の入手

このプラグインは Maven Central リポジトリーから入手できます。

Content Package Maven Plugin のゴールとパラメーター

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 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 を除くすべてのゴール

build

AEM インスタンスで既に定義されているコンテンツパッケージをビルドします。

メモ

Maven プロジェクト内でこのゴールを実行する必要はありません。

パラメーター

build ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。

install

リポジトリー内のパッケージをインストールします。このゴールの実行に 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

パッケージマネージャー にデプロイされているパッケージを一覧表示します。

パラメーター

ls ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。

rm

パッケージマネージャー からパッケージを削除します。

パラメーター

rm ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。

uninstall

パッケージをアンインストールします。 パッケージは、アンインストールされた状態でサーバーに残ります。

パラメーター

uninstall ゴールのすべてのパラメーターについては、共通パラメーターを参照してください。

package

コンテンツパッケージを作成します。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 ファイルに設定できる追加のプロパティを定義します。これらのプロパティで次の定義済みプロパティを上書きすることはできません。groupgroup パラメーターを使用して設定)、namename パラメーターを使用して設定)、versionversion パラメーターを使用して設定)、description(プロジェクトの説明から設定)、groupId(Maven プロジェクト記述子の groupId)、artifactId(Maven プロジェクト記述子の artifactId)、dependenciesdependencies パラメーターを使用して設定)、createdBy(システムプロパティ user.name の値)、created(現在のシステム時刻)、requiresRootrequiresRoot パラメーターを使用して設定)、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 要素は、パッケージが読み込まれる際にリポジトリー内の内容がどのような影響を受けるかを定義します。次の値を使用できます。

  • merge:​まだリポジトリーに含まれていないパッケージ内容が追加されます。パッケージとリポジトリーの両方に含まれている内容は変更されません。リポジトリーの内容が削除されることはありません。
  • replace:​リポジトリーに含まれていないパッケージ内容がリポジトリーに追加されます。リポジトリー内の内容が、パッケージ内の一致する内容に置き換えられます。パッケージ内に存在しない内容はリポジトリーから削除されます。
  • update:​リポジトリーに含まれていないパッケージ内容がリポジトリーに追加されます。リポジトリー内の内容が、パッケージ内の一致する内容に置き換えられます。既存の内容はリポジトリーから削除されます。

フィルターに mode 要素が含まれていない場合は、デフォルト値 replace が使用されます。

help

パラメーター

名前 必須 デフォルト値 説明
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 プロジェクトアーキタイプを使用した AEM プロジェクトの生成

最新の AEM プロジェクトアーキタイプでは、オンプレミス実装でも AMS 実装でも、ベストプラクティスに従ったパッケージ構造を実装しているので、すべての AEM プロジェクトにこのプロジェクトアーキタイプを使用することをお勧めします。

ヒント

詳しくは、AEM as a Cloud Service のドキュメントの AEM プロジェクトの構造 と、 AEM プロジェクトアーキタイプ のドキュメントを参照してください。どちらも AEM 6.5 に完全に対応しています。

このページ