Adobe Content Package Maven Plugin

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

構築したパッケージは Adobe Content Package Maven Plugin で AEM にデプロイされます。その結果、通常は AEM パッケージマネージャーを使用して実行する以下のタスクを自動化できるようになります。

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

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

メモ

パッケージの作成は、Apache Jackrabbit FileVault パッケージ Maven プラグインで管理されるようになりました。構築したパッケージは、ここで説明するように、Adobe Content Package Maven Plugin で AEM にデプロイされます。

パッケージと 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 ファイルのビルド要素内に次のプラグイン要素を追加します。

<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 でプラグインをダウンロードできるようにするには、このページの Content Package Maven Plugin の取得で提供されるプロファイルを使用します。

Content Package Maven Plugin のゴール

Content Package Plugin に用意されているゴールおよびゴールパラメーターについては、以降の節で説明します。共通パラメーターの節に示すパラメーターはほとんどのゴールに使用できます。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 | String | いいえ | なし | インストールするアーティファクトのバージョン |

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 に完全に対応しています。

このページ