Beheben der veralteten Bibliotheksnutzung com.google.common (Guava) während der Bereitstellung erkannt

AEM-Bereitstellungen schlagen fehl oder das Trigger-Aktionscenter meldet, wenn die veraltete com.google.common-API (Google Guava) erkannt wird. Cloud Manager überprüft alle OSGi-Importe - einschließlich der transitiven und Testbereichsabhängigkeiten -, sodass die Warnung auch dann angezeigt wird, wenn ein Projekt nicht explizit von Guava abhängig ist. Die Fehlerbehebung hängt von der Quelle ab: veraltete ACS AEM Commons, Beispielpakete für Kernkomponenten, Testbibliotheken oder benutzerdefinierter Code, der direkt auf Guava-Dienstprogramme verweist. Das Entfernen oder Ersetzen der Guava-Abhängigkeit und die anschließende erneute Bereitstellung löschen den Warnhinweis und schließen das Aktionscenter.

Beschreibung description

Problem: Cloud Manager kennzeichnet eine veraltete Nutzung von com.google.common (Guava) während der Bereitstellung

Beschreibung

Cloud Manager und der AEM-API-Veraltungsscanner markieren die veraltete Verwendung von com.google.common.*. Die Warnung wird auch dann angezeigt, wenn ein Projekt keine explizite Guava-Abhängigkeit aufweist, da Cloud Manager OSGi-Importe einschließlich transitiver und Testbereichsabhängigkeiten überprüft. Das Problem betrifft AEMaaCS-, Managed Services- und On-Premise-Umgebungen.

Umgebung:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services (AMS)
  • AEM 6.5 LTS On-Premise
  • Cloud Manager (Build- und Code-Qualitäts-Pipelines)

Problem/Symptome:

  • Aktionscenter-Warnhinweis: Deprecated Library Detected — com.google.common
  • Cloud Manager Analyzer-Protokollwarnungen, die auf Pakete wie com.google.common.collect verweisen
  • Der Pipeline-Code-Qualitätsschritt wird angehalten oder schlägt aufgrund einer veralteten Bibliotheksnutzung fehl
  • OSGi-Inspektor bestätigt com.google.common.* von Bundles, auch wenn es sich nur um eine vorübergehende Testabhängigkeit handelt

Grundursache:

Die com.google.common-API ist vollständig veraltet und soll in AEM as a Cloud Service entfernt werden. Cloud Manager kennzeichnet jedes Bundle, das com.google.common.* importiert, unabhängig davon, ob die Abhängigkeit explizit, transitiv oder vom Testbereich ist. Die veraltete Verwendung kann von veralteten ACS AEM Commons-Versionen, Kernkomponenten-Beispielpaketen, io.wcm, slf4j-test, sling-mock, Asset Share Commons oder benutzerdefiniertem Code unter Verwendung von Guava-Dienstprogrammen wie Lists.partition() herrühren. Auf AEM 6.5 LTS und On-Premise wird Guava nicht mehr ausgeliefert und kann aufgrund von sling_bootstrap.txt nicht als eigenständiges Bundle installiert werden.

Wie kann ich bestätigen

  1. Führen Sie Folgendes in Ihrem Kern-Bundle-Modul aus, um alle Abhängigkeiten zu identifizieren, die in Guava gezogen werden, einschließlich des Testbereichs:

    code language-none
    mvn dependency:tree -Dincludes=com.google.guava:*,com.google.common:*
    
  2. Überprüfen Sie die Ausgabe, um zu bestätigen, ob die Quelle direkt oder transitiv ist, und ordnen Sie sie einem der folgenden Korrekturpfade zu.

  3. Vergleichen Sie die Protokolle mit Cloud Manager Analyzer, um zu bestätigen, welche Bundles com.google.common.* importieren.

Lösung resolution

  1. Benutzerdefinierter Code mit Guava (AEMaaCS, AMS, On-Premise): Ersetzen Sie com.google.common Dienstprogramme durch JDK oder Apache Commons Collections 4-Äquivalente. Ersetzen Sie beispielsweise Lists.partition() durch einen Java-Stream-basierten Batch-Ansatz. Überprüfen Sie dies, indem Sie nach dem Projekt suchen:

    code language-none
    grep -R "com.google.common" ./src
    

Wenn das Entfernen von Guava die Funktionalität kurzfristig beeinträchtigt, betten Sie vorübergehend Ihre eigene Guava-Version ein (siehe Schritt 5) und planen Sie die Umgestaltung.
​2. ACS AEM Commons, das Guava abruft (AEMaaCS): Aktualisieren Sie ACS AEM Commons auf mindestens Version 6.11.0 und stellen Sie sicher, dass classifier=cloud gemäß den offiziellen Richtlinien festgelegt ist. Erneut erstellen und die Analyzer-Ausgabe überprüfen, um zu bestätigen, dass Guava nicht mehr gemeldet wird.
​3. Beispielpakete für Kernkomponenten (AEMaaCS): Entfernen Sie alle core.wcm.components.examples.* Pakete aus Ihrem all. Führen Sie mvn clean install erneut aus und überprüfen Sie das erstellte Inhaltspaket, um sicherzustellen, dass das Beispielpaket nicht mehr verfügbar ist. Vergewissern Sie sich, dass sie nicht durch die übergeordnete POM-Vererbung erneut eingeführt wurde.
​4. Transitive Abhängigkeiten für den Testbereich (AEMaaCS): Testbibliotheken wie slf4j-test und io.wcm.testing.aem-mock.*, die transitiv auf Guava verweisen, entfernen oder ersetzen. Führen Sie mvn dependency:tree erneut aus, um zu bestätigen, dass com.google.common nicht mehr angezeigt wird. Wenn das Leck weiterhin besteht, konfigurieren Sie das Bundle-Plug-in, um com.google.common.* von der Import-Package auszuschließen.
​5. AEM 6.5 On-Premise oder AMS - Einbetten von Guava in ein benutzerdefiniertes Bundle: Wenn Guava erforderlich ist, sollten Sie es in ein benutzerdefiniertes Bundle einbetten oder freigeben, anstatt es als eigenständiges Bundle zu installieren (eigenständige Installation wird von sling_bootstrap.txt blockiert). Stellen Sie sicher, dass das Bundle seine Guava-Pakete nicht exportiert. Bereitstellen und Bestätigen, dass das benutzerdefinierte Bundle in der Web-Konsole einen Active Status aufweist.
​6. Neu erstellen und erneut bereitstellen: Führen Sie eine vollständige Cloud Manager-Pipeline (AEMaaCS) aus oder stellen Sie das OSGi-Bundle über den AMS/On-Premise-Bereitstellungsprozess bereit. Bestätigen, dass der Code-Qualitätsschritt abgeschlossen wird, ohne dass veraltete com.google.common.* gemeldet werden.
​7. Erneut überprüfen: AEMaaCS führt die Ausführung der vollständigen Cloud Manager-Pipeline einen erneuten Trigger desselben Scanners durch, der Aktionscenter-Vorfälle erstellt. Wenn keine veraltete Nutzung erkannt wird, wird der Incident automatisch aufgelöst. Das Aktionszentrum aktualisieren, um zu bestätigen, dass der Vorfall geschlossen ist.

Validierung

  1. Führen Sie mvn dependency:tree erneut aus und bestätigen Sie, dass keine Module importiert com.google.common.*.
  2. Überprüfen Sie die Cloud Manager Analyzer-Protokolle nach der Bereitstellung, um sicherzustellen, dass keine veralteten Bibliothekswarnungen mehr vorhanden sind.
  3. Im Aktionscenter bestätigen werden keine veralteten Vorfälle mehr generiert.
  4. Überprüfen Sie mit der OSGi-Web-Konsole oder den Pipeline-Protokollen, dass keine benutzerdefinierten Bundle importiert com.google.common.*.

Verwandtes Lesen

recommendation-more-help
experience-cloud-kcs-help-kbarticles