Risoluzione dell’utilizzo obsoleto della libreria com.google.common (Guava) rilevato durante la distribuzione

Le distribuzioni di AEM non riescono o attivano gli avvisi del Centro operativo quando viene rilevata l’API obsoleta com.google.common (Google Guava). Cloud Manager controlla tutte le importazioni OSGi, comprese le dipendenze transitive e dell’ambito del test, pertanto l’avviso viene visualizzato anche quando un progetto non dipende esplicitamente da Guava. La correzione dipende dalla sorgente: pacchetti di esempio ACS AEM Commons, Componenti core obsoleti, librerie di test o codice personalizzato che fa riferimento direttamente alle utility Guava. Se si rimuove o sostituisce la dipendenza Guava e quindi si ridistribuisce, l’avviso viene cancellato e l’incidente del Centro azioni viene chiuso.

Descrizione description

Problema: Cloud Manager segnala che l’utilizzo di com.google.common (Guava) è stato dichiarato obsoleto durante la distribuzione

Descrizione

Cloud Manager e il flag AEM API deprecation scanner hanno dichiarato obsoleto l’utilizzo di com.google.common.*. L’avviso viene visualizzato anche quando un progetto non ha una dipendenza Guava esplicita, perché Cloud Manager esamina le importazioni OSGi, incluse le dipendenze transitive e dell’ambito dei test. Il problema riguarda gli ambienti AEMaaCS, Managed Services e On-Premise.

Ambiente:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services (AMS)
  • AEM 6.5 LTS On-Premise
  • Cloud Manager (pipeline di generazione e qualità del codice)

Problema/Sintomi:

  • Avviso Centro azioni: Deprecated Library Detected — com.google.common
  • Avvisi di registro di Cloud Manager analyzer che fanno riferimento a pacchetti come com.google.common.collect
  • Il passaggio Qualità codice della pipeline viene sospeso o non riesce a causa di un utilizzo obsoleto della libreria
  • Il controllo OSGi conferma l’importazione dei bundle com.google.common.* anche quando si tratta solo di una dipendenza di test transitiva

Causa principale:

L’API com.google.common è completamente obsoleta e pianificata per la rimozione in AEM as a Cloud Service. Cloud Manager contrassegna qualsiasi bundle che importa com.google.common.*, indipendentemente dal fatto che la dipendenza sia esplicita, transitiva o di ambito di test. L’utilizzo obsoleto può avere origine da versioni obsolete di ACS AEM Commons, pacchetti di esempio dei Componenti core, librerie di test io.wcm, slf4j-test, sling-mock, Asset Share Commons o codice personalizzato, utilizzando utility Guava come Lists.partition(). In AEM 6.5 LTS e On-Premise, Guava non viene più fornito e non può essere installato come bundle standalone a causa di sling_bootstrap.txt restrizioni.

Come confermare

  1. Esegui quanto segue nel modulo del bundle core per identificare tutte le dipendenze che vengono richiamate in Guava, incluso l’ambito di test:

    code language-none
    mvn dependency:tree -Dincludes=com.google.guava:*,com.google.common:*
    
  2. Esaminare l’output per verificare se l’origine è diretta o transitiva e confrontarla con uno dei percorsi di correzione riportati di seguito.

  3. Riferimento incrociato con i registri di Cloud Manager Analyzer per confermare quali bundle importano com.google.common.*.

Risoluzione resolution

  1. Codice personalizzato con Guava (AEMaaCS, AMS, On-Prem): Sostituisci com.google.common utilità con equivalenti JDK o Apache Commons Collections 4. Ad esempio, sostituire Lists.partition() con un approccio basato su flusso Java per la gestione dei batch. Verifica ricercando nel progetto:

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

Se rimuovi Guava interrompe la funzionalità a breve termine, incorpora temporaneamente la tua versione Guava (vedi passaggio 5) e pianifica il refactoring.
​2. ACS AEM Commons pull di Guava (AEMaaCS): Aggiorna ACS AEM Commons almeno alla versione 6.11.0 e assicurati che classifier=cloud sia impostato in base alle indicazioni ufficiali. Rigenera e controlla l’output dell’analizzatore per confermare che Guava non è più segnalato.
​3. Pacchetti di esempio dei Componenti core (AEMaaCS): Rimuovi tutti i core.wcm.components.examples.* pacchetti dal modulo all. Eseguire nuovamente mvn clean install ed esaminare il pacchetto di contenuti generato per verificare che il pacchetto di esempi non sia più disponibile. Verificare che non sia stato reintrodotto dall’ereditarietà POM padre.
​4. Dipendenze transitive dell’ambito di test (AEMaaCS): Rimuovere o sostituire le librerie di test come slf4j-test e io.wcm.testing.aem-mock.* che fanno riferimento in modo transitorio a Guava. Eseguire nuovamente mvn dependency:tree per confermare che com.google.common non è più visualizzato. Se la perdita persiste, configurare il plug-in del bundle per escludere com.google.common.* da Import-Package.
​5. AEM 6.5 On-Prem o AMS: incorporare Guava in un bundle personalizzato: Se è necessario Guava, incorporarlo o ombreggiarlo in un bundle personalizzato anziché installarlo come bundle autonomo (l’installazione autonoma è bloccata da sling_bootstrap.txt). Assicurati che il bundle non esporti i pacchetti Guava. Distribuire e confermare il bundle personalizzato mostra uno stato Active nella console Web.
​6. Rigenera e ridistribuisci: Esegui una pipeline Cloud Manager completa (AEMaaCS) o distribuisci il bundle OSGi tramite il processo di distribuzione AMS/On-Prem. Confermare il completamento del passaggio di qualità del codice senza segnalare gli avvisi obsoleti di com.google.common.*.
​7. Riconvalida: Per AEMaaCS, l’esecuzione della pipeline Cloud Manager completa riattiva lo stesso scanner che crea gli incidenti del Centro operativo. Se non viene rilevato alcun utilizzo obsoleto, l’evento imprevisto si risolve automaticamente. Aggiorna Centro azioni per confermare la chiusura dell’evento imprevisto.

Convalida

  1. Eseguire di nuovo mvn dependency:tree e confermare che non è stata eseguita alcuna importazione moduli com.google.common.*.
  2. Dopo la distribuzione, controlla i registri di Cloud Manager Analyzer per verificare che non rimangano avvisi obsoleti relativi alla libreria.
  3. Conferma che il Centro operativo non genera più problemi libreria obsoleti.
  4. Verificare che non venga importato alcun bundle personalizzato com.google.common.* utilizzando la console Web OSGi o i registri della pipeline.

Lettura correlata

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