MavenコマンドラインによるアーキタイプのAEMプロジェクト

目次

アーキタイププロジェクトの生成

基本的に、アーキタイププロジェクト を生成する際には、Mavenコマンドを実行する必要があります。そして、必要に応じてコマンドラインを調整します。

もちろん、コマンドラインを実行する前に、下記資材のインストールが必要です。

アドビのドキュメント の記載内容のように、ベースとなるMavenコマンドラインは、下記のようなものです。

mvn -B org.apache.maven.plugins:maven-archetype-plugin:3.2.1:generate \
 -D archetypeGroupId=com.adobe.aem \
 -D archetypeArtifactId=aem-project-archetype \
 -D archetypeVersion=XX \
 -D appTitle="My Site" \
 -D appId="mysite" \
 -D groupId="com.mysite" \

ここでは、XXを最新のアーキタイプバージョン番号(今現在41)に置き換えて実行します。

Windows環境の場合、Git Bash をお勧めします。任意のフォルダーで右クリック、メニューから「Git Bash Here」をクリックします。

開かれた「Git Bash」画面には、Mavenコマンドを入力し、Enterキーを押下しますと、アーキタイププロジェクトの生成処理が開始されます。

ということで、何らかのエラーが発生し、処理が中断されたようです。エラーの内容を見ると、バーチャルホストに関する問題で、Dispatcher領域に関係するものです。

アドビのドキュメントを見ますと、プロパティ includeDispatcherConfig のデフォルト値が「Y」となり、Mavenコマンドラインに含まないと、Dispatcherの設定confファイルが生成され、何かの問題でjava.nio.file.FileSystemExceptionのエクセプションが発生したようです。

Dispatcherの設定confファイルが生成しないプロジェクトの生成には、プロパティ includeDispatcherConfig の設定が必要です。一先ず、プロパティ includeDispatcherConfig の値を「N」に設定し、もう一度Mavenコマンドを実行します。

mvn -B org.apache.maven.plugins:maven-archetype-plugin:3.2.1:generate \
 -D archetypeGroupId=com.adobe.aem \
 -D archetypeArtifactId=aem-project-archetype \
 -D archetypeVersion=41 \
 -D appTitle="My Site" \
 -D appId="mysite" \
 -D groupId="com.mysite" \
 -D includeDispatcherConfig=n

そうしますと、ワーニングメッセージが出ていますが、結果的に BUILD SUCCESS となり、アーキタイププロジェクトが生成されました。

特定のアーキタイプ

生成したアーキタイププロジェクトのフォルダに見ると、Mavenコマンドが実行したフォルダの直下に、appIdの「mysite」で名付けられたフォルダが生成され、さらに、その中、プロジェクト各モジュールのフォルダが生成されています。

ここで注目して欲しいのは、archetype.properties ファイルです。今回のMavenコマンドでどんなアーキタイププロジェクトが生成されたのは、このファイルに記述されています。

archetype.properties ファイルには、「aemVersion=cloud」とのプロパティ値を見ると、今回生成したアーキタイププロジェクトは、AEM as s Cloud Service のプロジェクトとなっていることが分かりました。

これは、実行したアーキタイププロジェクトの生成する Mavenコマンドラインに、aemVersionプロパティを設定しない場合、デフォルト値の「cloud」となっている原因です。

aemVersionプロパティにより、アーキタイププロジェクトのタイプが大きく変わります。例えば、オンプレミスの場合、下記のようにプロパティ設定します。

aemVersion=6.5.13

また、今回のAEM as s Cloud Service の場合、デフォルト値でプロパティ設定するのは良いです。

aemVersion=cloud
sdkVersion=latest

ちなみに、オンプレミスの場合、aemVersionプロパティで設定した数値により、pom.xmlでは、uber-jarのバージョン番号をそのまま指定します。例えば、aemVersion=6.5.13と設定する場合、pom.xmldependencyには、下記のように設定されています。

      <dependency>
        <groupId>com.adobe.aem</groupId>
        <artifactId>uber-jar</artifactId>
        <version>6.5.13</version>
        <scope>provided</scope>
      </dependency>

ここで注意して欲しいのは、com.adobe.aemリポジトリには、6.5.14 のバージョン番号が存在しないため、aemVersion=6.5.14と設定すると、ビルドエラーが発生します。なので、6.5.13、或いは、6.5.15と設定すれば良いでしょう。

アーキタイププロジェクトのビルド

早速ですが、「mysite」フォルダに入って、「Git Bash」を立ち上げて、アーキタイププロジェクトのビルドを実行してみます。

以下のMavenコマンドで、ビルドを実行します。

$  mvn clean install

BUILD SUCCESS と表示すると、ビルドが正常終了します。

アーキタイププロジェクトのデプロイ

以下のMavenコマンドで、ローカル環境にデプロイします。

$ mvn clean install -PautoInstallPackage

BUILD SUCCESS と表示すると、デプロイが正常終了します。

AEMをログインし、パケージマネージャー画面でインストールされたパケージを確認できます。

ui.apps モジュールの資材は、/apps 配下にデプロイされています。

ui.content モジュールの資材は、/content 、/conf 配下にデプロイされています。

ui.config モジュールのOSGI設定資材は、/apps 配下にデプロイされています。

all モジュールは、上記のパッケージを纏めて、デプロイされています。

また、core モジュールには、Javaソースコードが含まれ、バンドルとしてAEMインスタンスにデプロイされています。

課題

  1. AEMにInstall時のpom.xmlの書き方
  2. 特定のアーキタイプに対して

参照サイト

AEM WKND Sites Project