AEM プロジェクトのアーキタイプは、最小限のベストプラクティスベースの Adobe Experience Manager プロジェクトを独自の AEM プロジェクトの起点として作成します。このアーキタイプを使用する際に指定する必要があるプロパティにより、このプロジェクトのすべての部分の名前を指定し、特定のオプション機能を制御できます。
AEM プロジェクトのアーキタイプを使用すると、数回のキー操作で、ベストプラクティスベースの AEM プロジェクトを構築するためのパスが設定されます。アーキタイプを使用すると、すべての要素が配置され、結果として生成されるプロジェクトを最小限に抑えながら、AEM の主要機能すべてが実装されることになります。これにより、必要な作業はその上に構築して拡張するだけとなります。
もちろん、成功する AEM プロジェクトには多数の要素がありますが、AEM プロジェクトのアーキタイプを使用すると健全な基盤を構築できるので、あらゆる AEM プロジェクトで強くお勧めします。
プロジェクトのアーキタイプを使用すると、AEM での開発を簡単に開始できます。最初の手順にはいくつかの方法があります。
AEM アーキタイプは、次のモジュールで構成されています。
/apps
と /etc
の部分(JS および CSS クライアントライブラリ、コンポーネント、テンプレート)が含まれます。Maven で表される AEM アーキタイプのモジュールは、アプリケーション、コンテンツ、および必要な OSGi バンドルを表すコンテンツページとして AEM にデプロイされます。
アーキタイプを使用するには、最初にプロジェクトを作成し、前述のとおりにローカルファイル構造でモジュールを生成する必要があります。プロジェクト生成の一環として、プロジェクト名、バージョンなど、プロジェクトの多数のプロパティを定義できます。
Maven でプロジェクトを構築すると、AEM にデプロイできるアーティファクト(パッケージおよび OSGi バンドル)が作成されます。追加の Maven コマンドおよびプロファイルを使用して、プロジェクトのアーティファクトを AEM インスタンスにデプロイできます。
最初に、最も簡単に AEM Eclipse 拡張機能を使用し、新しいプロジェクトウィザードに従って「AEM Sample Multi-Module Project」を選択し、リリースされたバージョンのアーキタイプを使用できます。
もちろん、Maven を直接呼び出すこともできます。
mvn -B archetype:generate \
-D archetypeGroupId=com.adobe.aem \
-D archetypeArtifactId=aem-project-archetype \
-D archetypeVersion=XX \
-D aemVersion=cloud \
-D appTitle="My Site" \
-D appId="mysite" \
-D groupId="com.mysite" \
-D frontendModule=general \
-D includeExamples=n
XX
を、最新の AEM プロジェクトアーキタイプのバージョン番号に設定します。aemVersion=cloud
と設定します。aemVersion=6.5.0
と設定します。AEM as a Cloud Service の場合はコアコンポーネントがすぐに使用できる形で提供されているので、コアコンポーネントの依存関係は、非クラウドバージョンの AEM の場合にのみ追加します。appTitle="My Site"
を調整して、Web サイトのタイトルやコンポーネントグループを定義します。appId="mysite"
を調整して、Maven アーティファクト ID、コンポーネントフォルダー名、設定フォルダー名、コンテンツフォルダー名、およびクライアントライブラリ名を定義します。groupId="com.mysite"
を調整して、Maven グループ ID と Java ソースパッケージを定義します。ベストプラクティスとしては、repo.adobe.com を自動で maven のビルドプロセスに追加するために、adobe-public
プロファイルを Maven の settings.xml
ファイルに追加することが推奨されます。
POM の例はこちらにあります。
アーキタイプを使用してプロジェクトを作成する場合は、次のプロパティを使用できます。
名前 | デフォルト値は | 説明 |
---|---|---|
appTitle |
アプリケーションのタイトル。Web サイトのタイトルやコンポーネントグループに使用されます(例:"My Site" )。 |
|
appId |
技術的な名前。コンポーネント、設定、コンテンツのフォルダー名やクライアントライブラリ名に使用されます(例:"mysite" )。 |
|
artifactId |
${appId} |
基本 Maven アーティファクト ID です(例:"mysite" )。 |
groupId |
基本 Maven グループ ID です(例:"com.mysite" )。 |
|
package |
${groupId} |
Java ソースパッケージです(例:"com.mysite" )。 |
version |
1.0-SNAPSHOT |
プロジェクトのバージョンです(例:1.0-SNAPSHOT )。 |
aemVersion |
cloud |
ターゲット AEM バージョンです(AEM as a Cloud Service の場合は cloud 。Adobe Managed Services またはオンプレミスの場合は、6.5.0 、6.4.4 のいずれか)。 |
sdkVersion |
latest |
aemVersion=cloud の場合は、SDK のバージョンを指定できます(例:2020.02.2265.20200217T222518Z-200130 )。 |
includeDispatcherConfig |
y |
aemVersion の値に応じて、クラウドか AMS/オンプレミスのいずれかの Dispatcher 設定を組み込みます(y または n )。 |
frontendModule |
general |
クライアントライブラリを生成する Webpack フロントエンドビルドモジュールを組み込みます(通常のサイトの場合は general または none 。SPA エディターを実装しているシングルページアプリの場合は angular または react )。 |
language |
en |
コンテンツ構造の作成に使用する言語コード(ISO 639-1)(例:en 、deu )。 |
country |
us |
コンテンツ構造の作成に使用する国コード(ISO 3166-1)(例:US )。 |
singleCountry |
y |
言語マスターコンテンツ構造を組み込みます(y または n )。 |
includeExamples |
n |
コンポーネントライブラリのサンプルサイトを組み込みます(y または n )。 |
includeErrorHandler |
n |
インスタンス全体でグローバルに使用されるカスタムの 404 応答ページを組み込みます(y または n )。 |
includeCommerce |
n |
CIF コアコンポーネントの依存関係を含み、対応するアーティファクトを生成します。 |
commerceEndpoint |
CIF でのみ必須です。使用するコマースシステム GraphQL サービスのオプションのエンドポイント(例:https://hostname.com/grapql )をクリックします。 |
|
datalayer |
y |
Adobe クライアントデータレイヤーとの統合をアクティブ化します。 |
amp |
n |
生成されたプロジェクトテンプレートに対して AMP のサポートを有効にします。 |
enableDynamicMedia |
n |
プロジェクトポリシー設定で基盤 Dynamic Media コンポーネントを有効にし、コア画像コンポーネントのポリシーで Dynamic Media 機能をアクティブ化します。 |
enableSSR |
n |
フロントエンドプロジェクトに対して SSR を有効にするオプション |
precompiledScripts |
n |
ui.apps のサーバーサイドスクリプトを事前にコンパイルして、ui.apps プロジェクトのセカンダリバンドルアーティファクトとしてビルドにアタッチするオプション。aemVersion を cloud に設定する必要があります。 |
アーキタイプを初めてインタラクティブモードで実行する際には、デフォルト値のプロパティは変更できません(詳しくは ARCHETYPE-308 を参照してください)。この値は、最後のプロパティ確認が拒否され、質問が繰り返された場合や、コマンドラインでパラメータを渡す際に変更できます(例:-DoptionIncludeExamples=n
)。
Windows 上で実行して Dispatcher 設定を生成する場合は、管理者権限のコマンドプロンプトまたは Windows Subsystem for Linux から実行する必要があります(問題 329 を参照)。
生成された Maven プロジェクトは、mvn install
の実行時に様々なデプロイメントプロファイルをサポートします。
プロファイル ID | 説明 |
---|---|
autoInstallBundle |
maven-sling-plugin を含むコアバンドルを felix コンソールにインストールします。 |
autoInstallPackage |
パッケージマネージャーに content-package-maven-plugin を使用し、ui.content と ui.apps のコンテンツパッケージをローカルホスト(ポート 4502)のデフォルトのオーサーインスタンスにインストールします。ホスト名とポートは、aem.host および aem.port ユーザー定義プロパティを使用して変更できます。 |
autoInstallPackagePublish |
パッケージマネージャーに content-package-maven-plugin を使用し、ui.content と ui.apps のコンテンツパッケージをローカルホスト(ポート 4503)のデフォルトのパブリッシュインスタンスにインストールします。ホスト名とポートは、aem.host および aem.port ユーザー定義プロパティを使用して変更できます。 |
autoInstallSinglePackage |
パッケージマネージャーに content-package-maven-plugin を使用し、all のコンテンツパッケージをローカルホスト(ポート 4502)のデフォルトのオーサーインスタンスにインストールします。ホスト名とポートは、aem.host および aem.port ユーザー定義プロパティを使用して変更できます。 |
autoInstallSinglePackagePublish |
パッケージマネージャーに content-package-maven-plugin を使用し、all のコンテンツパッケージをローカルホスト(ポート 4503)のデフォルトのパブリッシュインスタンスにインストールします。ホスト名とポートは、aem.host および aem.port ユーザー定義プロパティを使用して変更できます。 |
integrationTests |
提供された統合テストを AEM インスタンスで実行します(verify フェーズのみ)。 |
precompiledScripts |
precompiledScripts プロパティを y に設定してプロジェクトが生成されたときに自動的に定義されます。プロファイルはデフォルトでアクティブで、事前コンパイル済みスクリプトを含んだ OSGi バンドルを ui.apps 内に生成します。このスクリプトは all コンテンツパッケージに組み込まれます。プロファイルは -DskipScriptPrecompilation=true で無効にできます。 |
プロジェクトのルートディレクトリで実行するすべてのモジュールを構築するには、次の Maven コマンドを使用します。
mvn clean install
実行中の AEM インスタンスがある場合は、次の Maven コマンドを使用して、プロジェクト全体を構築およびパッケージ化し、AEM にデプロイできます。
mvn clean install -PautoInstallPackage
パブリッシュインスタンスにデプロイするには、次のコマンドを実行します。
mvn clean install -PautoInstallPackagePublish
または、パブリッシュインスタンスにデプロイするには、次のコマンドを実行します。
mvn clean install -PautoInstallPackage -Daem.port=4503
または、オーサーにバンドルのみをデプロイするには、次のコマンドを実行します。
mvn clean install -PautoInstallBundle
プロジェクトのルートにある pom.xml
(<src-directory>/<project>/pom.xml
)は親 POM と呼ばれ、プロジェクトの構造を駆動し、プロジェクトの依存関係と特定のグローバルプロパティを管理します。
親 POM の <properties>
セクションでは、ユーザー名/パスワード、ホスト名/ポートなど、AEM インスタンスにプロジェクトをデプロイする際に重要なグローバルプロパティを定義します。
これらのプロパティは、ローカルの AEM インスタンスにデプロイするために設定されています。これは、開発者が行う最も一般的なビルドです。オーサーインスタンスにデプロイするためのプロパティおよびパブリッシュインスタンスにデプロイするためのプロパティが存在することに注意してください。ここでは AEM インスタンスを認証するための認証も設定されます。デフォルトの admin:admin 認証が使用されています。
これらのプロパティは、より上位の環境にデプロイされる際には上書きされるよう設定されています。そうすることで、POM ファイルを変更する必要がなく、aem.host
および sling.password
などの変数をコマンドライン引数で上書きできます。
mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd
親 POM の <modules>
セクションは、プロジェクトが構築するモジュールを定義します。デフォルトでは、プロジェクトは以前に定義された標準モジュール(core、ui.apps、ui.content、ui.tests および it.launcher)を構築します。プロジェクトの拡大に合わせて、いつでもモジュールを追加できます。
親 POM の <dependencyManagement>
セクションは、プロジェクトで使用される API のすべての依存関係とバージョンを定義します。バージョンは親 POM 内で管理する必要があり、コアや ui.apps などのサブモジュールにはバージョン情報を一切含めてはなりません。
主要な依存関係の 1 つに AEM Java API Jar があります。これにより、AEM のバージョンに対して、すべての AEM API が単一の依存関係のエントリで含められます。
ベストプラクティスとしては、AEM のターゲットバージョンに合わせて uber-jar のバージョンを更新することが推奨されます。例えば、AEM 6.4 をデプロイする予定であれば、uber-jar のバージョンを 6.4.0 に更新します。
もちろん、AEM プロジェクトのアーキタイプはコアコンポーネントを活用します。
コアコンポーネントは、デフォルトの実行モードで AEM に自動的にインストールされます。また、サンプルの WKND サイトで使用されます。実稼動実行モード(nosamplecontent
)では、コアコンポーネントは使用できません。
そのため、すべてのデプロイメントでコアコンポーネントを使用するには、それらを Maven プロジェクトの一部に組み込むことが推奨されます。
最新のアーキテクチャでコアコンポーネントの最新バージョンが使用されるよう、通常は、コアコンポーネントの各リリースに続き、AEM プロジェクトアーキタイプがリリースされます。
ただし、新しいバージョンのアーキタイプは、新しいバージョンのコアコンポーネントに直接従っていない可能性があるので、コアコンポーネントの依存関係を最新バージョンに更新することができます。
core.wcm.components.examples は、コアコンポーネントの例を示す一連のサンプルページです。ベストプラクティスとして、実稼動用にプロジェクトをデプロイする場合は、この依存関係とサブパッケージのインクルージョンを削除する必要があります。
プロジェクトには 3 つのレベルのテストが含まれており、テストのタイプが異なるので、実行方法も場所も異なります。
mvn clean test
mvn clean verify -PintegrationTests
AEM プロジェクトアーキタイプを構築し、インストールしました。次は何をすればよいでしょうか。アーキタイプは小さいとはいえ、推奨ベストプラクティスに従って設定された、多数の強力な AEM 機能の例で構成されています。これらを使用すれば、プロジェクトで機能をどのように活用できるかがわかります。どのプロジェクトでも、次の作業が必要になる可能性があります。