AEM as a Cloud Serviceの PDFBox ライブラリが原因でパイプラインコンパイルに失敗しました

PDFBox ライブラリが OSGi 準拠のバンドルとして適切に埋め込まれていない場合、Adobe Experience Manager(AEM)as a Cloud Serviceでのパイプラインのコンパイルが失敗します。 その結果、ビルドプロセス中に依存関係が未解決になり、アナライザーエラーが発生します。 これを修正するには、PDFBox とその依存関係を専用の OSGi バンドルにラップし、プロジェクトの POM ファイルを更新して、ビルド順序とプラグインのバージョンが正しいことを確認する必要があります。

説明 description

環境

Adobe Experience Manager(AEM)as a Cloud Service - Sites (開発環境)

問題/症状

  • pdfbox-io:3.0.1pdfbox:3.0.1 などのバンドルがバージョン範囲を指定せずにパッケージをインポートすることを示す警告。
  • PDFBox の必須パッケージが必要な OSGi 開始レベルで書き出されず、実行時に未解決の依存関係が発生するというエラーが表示されます。
    • 2025-05-28 11:31:04.782 The analyser found the following errors for author and publish : 2025-05-28 11:31:04.783 [ api-regions-exportsimports] <custom>-<bundle>-project.core:0.0.1-SNAPSHOT: Bundle <custom>-<bundle>-project.core:0.0.1-SNAPSHOT is importing package(s) [ org.apache.pdfbox.pdmodel.common.filespecification, org.apache.pdfbox.multipdf, org.apache.pdfbox.pdmodel] in start level 20 but no bundle is exporting these for that start level. (com.<custom>.<code>:<custom>-<bundle>-project.all:0.0.1-SNAPSHOT)
  • この問題はクラウド環境でのみ発生します。ローカルビルドは正常にコンパイルされます。
  • filter.xml を使用した PDFBox の埋め込みまたは POM ファイルの変更に失敗しました。

解決策 resolution

この問題を解決するには、すべての依存関係がAEMの OSGi ランタイム環境用に適切に埋め込まれ、設定されていることを確認します。

  1. PDFBox を OSGi バンドルとしてラップするために、別のモジュールを作成します。

    • FontBox など、必要なすべての依存関係を含めます。
    • パッケージを明示的に書き出すには、Apache Felix Maven バンドルプラグインを使用します。
  2. all/pom.xml ファイルを更新します。

    1. PDFBox ラッパーモジュール用の埋め込みエントリを追加します。

      code language-none
      <embedded>
          <groupId>com.<custom>.<code></groupId>
          <artifactId><custom>-<bundle>-project.pdfbox-wrapper</artifactId>
          <type>jar</type>
          <target>/apps/custom-packages/application/install</target>
      </embedded>
      
    2. ラッパーモジュールの依存関係を宣言します。

      code language-none
      <dependency>
          <groupId>com.<custom>.<code></groupId>
          <artifactId><custom>-<bundle>-project.pdfbox-wrapper</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <type>jar</type>
      </dependency>
      
  3. 集約 POM ファイルでモジュールを正しく並べ替えて、ラッパーモジュールが、それに依存する他のモジュールより前にビルドされることを確認します。

  4. 現在のバージョンが filevault-package-maven-plugin 内の <version> などのタグをサポートしていない場合は、<embedded> をバージョン 1.1.5 以降にアップグレードします。

  5. mvn clean install ローカルで実行して確認:

    • 正しいマニフェストエントリでラッパー JAR が作成される。
    • アーティファクトは /apps/custom-packages/application/install の下に表示されます。
  6. Cloud Manager パイプラインを使用して更新されたパッケージをデプロイし、アナライザーエラーが発生しなくなったことを確認します。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f