Error de compilación de canalización debido a la biblioteca PDFBox en AEM as a Cloud Service

La compilación de canalizaciones en Adobe Experience Manager (AEM) as a Cloud Service falla cuando la biblioteca PDFBox no está incrustada correctamente como paquete compatible con OSGi. Esto provoca dependencias sin resolver y errores del analizador durante el proceso de generación. Para solucionarlo, debe envolver PDFBox y sus dependencias en un paquete OSGi dedicado, actualizar los archivos POM del proyecto y garantizar el orden de compilación y las versiones de complementos correctos.

Descripción description

Entorno

Adobe Experience Manager (AEM) as a Cloud Service: Sites (entorno de desarrollo)

Problema/Síntomas

  • Advertencias que indican que los paquetes como pdfbox-io:3.0.1 y pdfbox:3.0.1 importan paquetes sin especificar intervalos de versiones.
  • Errores que indican que los paquetes necesarios de PDFBox no se exportan en el nivel de inicio OSGi necesario, lo que provoca dependencias no resueltas durante el tiempo de ejecución:
    • 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)
  • El problema solo se produce en el entorno de la nube, las compilaciones locales se compilan correctamente.
  • Error al intentar incrustar PDFBox utilizando filter.xml o modificando archivos POM.

Resolución resolution

Para resolver este problema, asegúrese de que todas las dependencias estén correctamente incrustadas y configuradas para el entorno de tiempo de ejecución OSGi de AEM:

  1. Cree un módulo independiente para envolver PDFBox como un paquete OSGi.

    • Incluya todas las dependencias necesarias, como FontBox.
    • Utilice el complemento Apache Felix Maven Bundle para exportar paquetes explícitamente.
  2. Actualizar el archivo all/pom.xml.

    1. Agregue una entrada incrustada para el módulo envoltorio 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. Declare una dependencia para el módulo envolvente:

      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. Asegúrese de que el módulo envolvente se compila antes que otros módulos que dependen de él ordenando los módulos correctamente en el archivo POM del agregador.

  4. Actualice filevault-package-maven-plugin a la versión 1.1.5 o posterior si la versión actual no admite etiquetas como <version> dentro de <embedded>.

  5. Ejecutar mvn clean installlocalmente para comprobar:

    • El JAR envolvente se crea con las entradas de manifiesto correctas.
    • El artefacto aparece bajo /apps/custom-packages/application/install.
  6. Implemente el paquete actualizado a través de la canalización de Cloud Manager y confirme que ya no se producen errores del analizador.

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