Pipeline-Kompilierung aufgrund von PDFBox-Bibliothek in AEM as a Cloud Service fehlgeschlagen
Die Pipeline-Kompilierung in Adobe Experience Manager (AEM) as a Cloud Service schlägt fehl, wenn die PDFBox-Bibliothek nicht ordnungsgemäß als OSGi-konformes Bundle eingebettet ist. Dies führt zu nicht aufgelösten Abhängigkeiten und Analyzer-Fehlern während des Build-Prozesses. Um dies zu beheben, müssen Sie PDFBox und seine Abhängigkeiten in ein dediziertes OSGi-Bundle einschließen, die POM-Dateien Ihres Projekts aktualisieren und sicherstellen, dass die Build-Reihenfolge und die Plug-in-Versionen korrekt sind.
Beschreibung description
Umgebung
Adobe Experience Manager (AEM) as a Cloud Service - Sites (Entwicklungsumgebung)
Problem/Symptome
- Warnungen, die darauf hinweisen, dass Pakete wie
pdfbox-io:3.0.1undpdfbox:3.0.1Pakete importieren, ohne die Versionsbereiche anzugeben. - Fehler, die angeben, dass erforderliche Pakete aus PDFBox nicht auf der erforderlichen OSGi-Startebene exportiert werden, was zu nicht aufgelösten Abhängigkeiten während der Laufzeit führt:
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)
- Das Problem tritt nur in der Cloud-Umgebung auf. Lokale Builds wurden erfolgreich kompiliert.
- Versuche, PDFBox mithilfe von
filter.xmloder Ändern von POM-Dateien einzubetten, sind fehlgeschlagen.
Auflösung resolution
Um dieses Problem zu beheben, stellen Sie sicher, dass alle Abhängigkeiten ordnungsgemäß eingebettet und für die OSGi-Laufzeitumgebung von AEM konfiguriert sind:
-
Erstellen Sie ein separates Modul, um PDFBox als OSGi-Bundle zu verpacken.
- Schließen Sie alle erforderlichen Abhängigkeiten wie FontBox ein.
- Verwenden Sie das Apache Felix Maven Bundle-Plug-in , um Pakete explizit zu exportieren.
-
Aktualisieren Sie die
all/pom.xml.-
Fügen Sie einen eingebetteten Eintrag für das PDFBox-Wrapper-Modul hinzu:
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> -
Deklarieren Sie eine Abhängigkeit für das Wrapper-Modul:
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>
-
-
Stellen Sie sicher, dass das Wrapper-Modul vor anderen Modulen erstellt wird, die von ihm abhängig sind, indem Sie Module in der Aggregator-POM-Datei korrekt sortieren.
-
Aktualisieren Sie die
filevault-package-maven-pluginauf Version 1.1.5 oder höher, wenn Ihre aktuelle Version Tags wie<version>in<embedded>nicht unterstützt. -
Führen Sie
mvn clean installlokal aus, um Folgendes zu überprüfen:- Die Wrapper-JAR wird mit korrekten Manifesteinträgen erstellt.
- Das Artefakt wird unter
/apps/custom-packages/application/installangezeigt.
-
Stellen Sie das aktualisierte Paket über die Cloud Manager-Pipeline bereit und bestätigen Sie, dass keine Analyzer-Fehler mehr auftreten.