AEM プロジェクトアーキタイプの使用

最終更新日: 2024-02-13
  • 作成対象:
  • Developer
    Admin

このドキュメントでは、AEM プロジェクトのアーキタイプを使用して、最小限のベストプラクティスベースの Adobe Experience Manager プロジェクトを独自の AEM プロジェクトの起点として作成できる方法について説明します。

一般的な使用パターンと、アーキタイプで何が行えるかに焦点を当てます。ビルドオプションと技術的な手順について詳しくは、アーキタイプの GitHub リポジトリにあるドキュメントを参照してください。

ヒント

最新の AEM プロジェクトのアーキタイプおよび技術的なドキュメントは、GitHub を参照してください。

はじめに

プロジェクトのアーキタイプを使用すると、AEM での開発を簡単に開始できます。アーキタイプにおける最初の手順には、いくつかの方法があります。

アーキタイプの使用方法

アーキタイプを使用する最初の手順は、ローカルファイル構造内にモジュールを生成するプロジェクトを作成することです。プロジェクト生成の一環として、プロジェクト名、バージョン、様々なオプションの有効化など、プロジェクトの多数のプロパティを定義できます。

ヒント

アーキタイプを構築する際には常に、一連の readme も生成され、以下にリンクされている各モジュールの技術的な詳細と使用方法が提供されます。

Maven でプロジェクトを構築すると、AEM にデプロイできるアーティファクト(パッケージおよび OSGi バンドル)が作成されます。追加の Maven コマンドおよびプロファイルを使用して、プロジェクトのアーティファクトを AEM インスタンスにデプロイできます。

アーキタイプを使用して得られる結果

アーキタイプはモジュールで構成され、すべてのモジュールはアーキタイプの使用時に自動的に作成されます。

  • coreは、OSGi サービス、リスナー、スケジューラーなどのすべてのコア機能およびサーブレットやリクエストフィルターなどのコンポーネント関連の Java コードを含む Java バンドルです。
  • it.tests は、Java ベースの統合テストです。
  • ui.apps には、プロジェクトの /apps/etc の部分(JS および CSS クライアントライブラリ、コンポーネント、テンプレート)が含まれます。
  • ui.content には、ui.apps モジュールのコンポーネントを使用するサンプルコンテンツが含まれます。
  • ui.config には、プロジェクトの実行モード固有の OSGi 設定が含まれます。
  • ui.frontend.general には、一般的な Webpack ベースのフロントエンドのビルドモジュールの使用に必要なアーティファクトが含まれます(オプション)。
  • ui.frontend.react (オプション)​には、アーキタイプを使用して React に基づく SPA プロジェクトを作成する場合に必要なアーティファクトが含まれます(ビルドパラメーターに基づくオプション)。
  • ui.frontend.angular (オプション)​には、アーキタイプを使用して Angular に基づく SPA プロジェクトを作成する場合に必要なアーティファクトが含まれます(ビルドパラメーターに基づくオプション)。
  • ui.tests には Selenium ベースの UI テストが含まれます。
  • all は、ベンダー依存関係を含むすべてのコンパイル済みモジュール(バンドルとコンテンツパッケージ)を組み込んだ単一のコンテンツパッケージです。
  • dispatcher.ams には、AMS/オンプレミスプロジェクトの基本的な Dispatcher 設定が含まれます(ビルドパラメーターに基づくオプション)。
  • dispatcher.cloud には、AEMaaCS プロジェクトの基本的な Dispatcher 設定が含まれています(ビルドパラメーターに基づくオプション)。

コンテンツパッケージの構成

Maven で表されるアーキタイプのモジュールは、アプリケーション、コンテンツおよび必要な OSGi バンドルを表すコンテンツパッケージとして AEM にデプロイされます。

親 POM

プロジェクトのルートにある 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> セクションは、プロジェクトが構築するモジュールを定義します。デフォルトでは、プロジェクトは定義済みの標準モジュールをビルドします。プロジェクトの拡大に合わせて、いつでもモジュールを追加できます。

依存関係

親 POM の <dependencyManagement> セクションは、プロジェクトで使用される API のすべての依存関係とバージョンを定義します。バージョンは親 POM で管理する必要があります。サブモジュールには、バージョン情報を含めないでください。

Uber-Jar

主要な依存関係の 1 つが AEM Java API Jar です。これは、AEM のバージョンに対応する 1 つの依存関係エントリだけで、すべての AEM API を組み込みます。

メモ

ベストプラクティスとしては、AEM のターゲットバージョンに合わせて uber-jar のバージョンを更新することが推奨されます。例えば、AEM 6.5 をデプロイする予定であれば、uber-jar のバージョンを 6.5.X に更新します(X は最新のサービスパックです)。

コアコンポーネント

もちろん、アーキタイプはコアコンポーネントを利用します。そのため、すべてのデプロイメントでコアコンポーネントを使用するには、それらを Maven プロジェクトの一部に組み込むことが推奨されます。

core.wcm.components.examples は、コアコンポーネントの例を示す一連のサンプルページです。ベストプラクティスとして、実稼動用にプロジェクトをデプロイする場合は、この依存関係とサブパッケージのインクルージョンを削除する必要があります。

メモ

コアコンポーネントとアーキタイプは別々の GitHub プロジェクトとして維持管理されているので、そのリリースは異なります。

アーキタイプの各リリースでは、リリース時に使用可能なコアコンポーネントの最新リリースを利用します。ただし、コアコンポーネントへの依存関係を手動で更新することもできます。

テスト

プロジェクトには 3 つのレベルのテストが含まれており、テストのタイプが異なるので、実行方法も場所も異なります。

  • 単体テスト - バンドルに含まれているコードの従来の単体テスト
  • 統合テスト - AEM 環境(つまり AEM サーバー上)で単体に似たテストを実行するサーバーサイド統合テスト
  • UI テスト - ブラウザー側の動作を検証する Selenium ベースのブラウザーサイドテスト

このページ