HTTPS Maven リポジトリ
Cloud Manager リリース 2023.10.0 では、Maven 3.8.8 へのアップデートを含む、ビルド環境へのローリングアップデートが開始されました(リリース 2023.12.0 で完了)。Maven 3.8.1 で導入された重要な変更は、潜在的な脆弱性を軽減することを目的としたセキュリティ強化でした。具体的には、Maven リリースノートで説明するように、Maven では安全でないすべての http://*
ミラーをデフォルトで無効にするようになりました。
このセキュリティ強化の結果、一部のユーザーには、ビルド手順で、特に安全でない HTTP 接続を使用する Maven リポジトリからアーティファクトをダウンロードする際に問題が発生する場合があります。
アップデートされたバージョンでスムーズなエクスペリエンスを実現するために、アドビでは、ユーザーが Mavenリポジトリを更新して HTTP ではなく HTTPS を使用することをお勧めします。この調整は、業界でセキュアな通信プロトコルへの移行が進むのに合わせて行われ、安全で信頼性の高いビルドプロセスを維持するのに役立ちます。
特定の Java バージョンの使用
Cloud Manager のビルドプロセスでは、デフォルトで Oracle 8 JDK を使用してプロジェクトを作成しますが、AEM Cloud Service のお客様は Maven 実行 JDK バージョンを 21(推奨)、17、または 11 に設定する必要があります。
Maven JDK バージョンの設定
Maven 実行 JDK を設定するには、パイプラインで使用される Git リポジトリ分岐に .cloudmanager/java-version
というファイルを作成します。21
または 17
というテキストのみが含まれるようにファイルを編集します。Cloud Manager は値 8
も受け入れますが、このバージョンは AEM Cloud Service プロジェクトではサポートされなくなりました。その他の値は無視されます。21
または 17
を指定した場合は、Oracle Java 21 または Oracle Java 17 が使用されます。
Java 21 または Java 17 を使用したビルドへの移行の前提条件
Java 21 または Java 17 でビルドするために、Cloud Manager は、これらの Java バージョンと互換性のある SonarQube 9.9 を使用するようになりました。この変更は、Cloud Manager リリース 2025.1.0 で導入されました。SonarQube のアップグレードにお客様によるアクションは必要ありません。詳細および変更点については、Cloud Manager 2025.1.0 のリリースノートを参照してください。
アプリケーションを新しい Java ビルドバージョンとランタイムバージョンに移行する場合は、実稼動環境にデプロイする前に、開発環境とステージ環境で徹底的にテストします。
次のデプロイメント戦略をお勧めします。
- https://experience.adobe.com/#/downloads からダウンロードできる Java 21 を使用してローカル SDK を実行し、アプリケーションをデプロイして機能を検証します。ログを確認して、クラスロードまたはバイトコードウィービングの問題を示すエラーがないことを確認します。
- Cloud Manager リポジトリ内の分岐を、ビルド時の Java バージョンとして Java 21 を使用するように設定し、この分岐を使用するように開発パイプラインを設定して、パイプラインを実行します。検証テストを実行します。
- 問題がなければ、ビルド時の Java バージョンとして Java 21 を使用するようにステージ/実稼動パイプラインを設定して、パイプラインを実行します。
一部の翻訳機能について
Java 21 ランタイムにデプロイすると、次の機能が正しく機能しない可能性があります。アドビでは、2025年初頭までにこれらの問題を解決する予定です。
XLIFF
(XML Localization Interchange File Format)は、人による翻訳を使用すると失敗します。- 新しい Java バージョンでの ロケールコンストラクタの変更により、
I18n
(国際化)では、言語ロケールのヘブライ語(he
)、インドネシア語(in
)、イディッシュ語(yi
)が適切に処理されません。
ランタイム要件
Java 21 ランタイムは、すべての対象環境(AEM リリース 17098 以降で以下の条件を満たす環境)に適用されています。 環境が条件を満たさない場合は、パフォーマンス、可用性、セキュリティを確保するために調整を行うことが重要です。
-
ASM の最小バージョン:
新しい JVM ランタイムのサポートを確保するには、多くの場合、org.ow2.asm.*
アーティファクトにバンドルされている Java パッケージorg.objectweb.asm
の使用をバージョン 9.5 以降に更新します。 -
Groovy の最小バージョン:
新しい JVM ランタイムのサポートを確保するには、Java パッケージorg.apache.groovy
またはorg.codehaus.groovy
の使用をバージョン 4.0.22 以降に更新します。このバンドルは、AEM Groovy コンソールなどのサードパーティの依存関係を追加することで間接的に含めることができます。
-
Aries SPIFly の最小バージョン:
新しい JVM ランタイムのサポートを確保するには、Java パッケージorg.apache.aries.spifly.dynamic.bundle
の使用をバージョン 1.3.6 以降に更新します。
AEM Cloud Service SDK は、Java 21 をサポートしています。これにより、Cloud Manager パイプラインを実行する前にプロジェクトと Java 21 の互換性を確認できます。
-
ランタイムパラメーターの編集:
Java 21 を使用して AEM をローカルで実行すると、MaxPermSize
パラメーターにより起動スクリプト(crx-quickstart/bin/start
またはcrx-quickstart/bin/start.bat
)が失敗します。対処方法としては、スクリプトから-XX:MaxPermSize=256M
を削除するか、環境変数CQ_JVM_OPTS
を定義して-Xmx1024m -Djava.awt.headless=true
に設定します。この問題は、AEM Cloud Service SDK のバージョン 19149 以降で解決されています。
.cloudmanager/java-version
を 21
または 17
に設定します。 ご不明な点については、Adobe(aemcs-java-adopter@adobe.com までお問い合わせください。ビルド時間の要件
Java 21 および Java 17 を使用してプロジェクトをビルドできるようにするには、次の調整が必要です。これらは古い Java バージョンと互換性があるので、Java 21 および Java 17 を実行する前でも更新できます。
新しい言語機能を活用するには、AEM Cloud Service のお客様はできるだけ早く Java 21 を使用してプロジェクトを作成することをお勧めします。
-
bnd-maven-plugin
の最小バージョン:
新しい JVM ランタイムのサポートを確保するには、bnd-maven-plugin
の使用をバージョン 6.4.0 に更新します。バージョン 7 以降は、Java 11 以下と互換性がないので、そのバージョンへのアップグレードはお勧めしません。
-
aemanalyser-maven-plugin
の最小バージョン:
新しい JVM ランタイムのサポートを確保するには、aemanalyser-maven-plugin
の使用をバージョン 1.6.6 以降に更新します。 -
maven-bundle-plugin
の最小バージョン:
新しい JVM ランタイムのサポートを確保するには、maven-bundle-plugin
の使用をバージョン 5.1.5 以降に更新します。バージョン 6 以降は、Java 11 以下と互換性がないので、そのバージョンへのアップグレードはお勧めしません。
-
maven-scr-plugin
の依存関係の更新:maven-scr-plugin
は、Java 21 または Java 17 と直接互換性がありません。ただし、次の例に示すように、プラグイン設定で ASM 依存関係バージョンを更新して、記述子ファイルを生成できます。
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
<version>1.26.4</version>
<executions>
<execution>
<id>generate-scr-scrdescriptor</id>
<goals>
<goal>scr</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-analysis</artifactId>
<version>9.7.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
...
</plugins>
...
</build>
...
</project>