Résolution de l’utilisation obsolète de la bibliothèque com.google.common (Guava) détectée lors du déploiement
Les déploiements d’AEM échouent ou déclenchent des alertes du Centre d’actions lorsque l’API obsolète com.google.common (Google Guava) est détectée. Cloud Manager inspecte tous les imports OSGi, y compris les dépendances transitives et de portée de test, de sorte que l’avertissement s’affiche même lorsqu’un projet ne dépend pas explicitement de Guava. Le correctif dépend de la source : ACS AEM Commons obsolète, les exemples de packages des composants principaux, les bibliothèques de test ou le code personnalisé référençant directement les utilitaires Guava. La suppression ou le remplacement de la dépendance Guava, puis le redéploiement, efface l’alerte et ferme l’incident du Centre d’actions.
Description description
Problème : Cloud Manager signale l’utilisation obsolète de com.google.common (Guava) pendant le déploiement
Description
Cloud Manager et l’analyseur d’obsolescence de l’API AEM signalent l’utilisation obsolète de com.google.common.*. Cet avertissement s’affiche même lorsqu’un projet n’a pas de dépendance Guava explicite, car Cloud Manager inspecte les importations OSGi, y compris les dépendances transitives et de portée de test. Le problème affecte les environnements AEMaaCS, Managed Services et On-Premise .
Environnement :
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Managed Services (AMS)
- AEM 6.5 LTS On-Premise
- Cloud Manager (pipelines de création et de qualité du code)
Problème/Symptômes :
- Alerte du Centre des actions :
Deprecated Library Detected — com.google.common - avertissements du journal de Cloud Manager analyzer faisant référence à des packages tels que
com.google.common.collect - L’étape de qualité du code de pipeline se suspend ou échoue en raison d’une utilisation obsolète de la bibliothèque
- L’inspecteur OSGi confirme les
com.google.common.*d’importation de lots même s’il s’agit uniquement d’une dépendance de test transitive
Cause principale :
L’API com.google.common est complètement obsolète et sa suppression est planifiée dans AEM as a Cloud Service. Cloud Manager signale tout lot qui importe des com.google.common.*, que la dépendance soit explicite, transitive ou de portée de test. Une utilisation obsolète peut provenir de versions obsolètes d’ACS AEM Commons, de packages d’exemple de composants principaux, de bibliothèques de test io.wcm, de slf4j-test, de sling-mock, d’Asset Share Commons ou de code personnalisé à l’aide d’utilitaires Guava tels que Lists.partition(). Sur AEM 6.5 LTS et On-Premise, Guava n’est plus fourni et ne peut pas être installé en tant que bundle autonome en raison de restrictions sling_bootstrap.txt.
Comment confirmer
-
Exécutez les opérations suivantes dans votre module de lot principal pour identifier toutes les dépendances qui extraient dans Guava, y compris la portée du test :
code language-none mvn dependency:tree -Dincludes=com.google.guava:*,com.google.common:* -
Passez en revue la sortie pour confirmer si la source est directe ou transitive et faites-la correspondre à l’un des chemins de conversion ci-dessous.
-
Effectuez des références croisées avec les journaux de l’analyseur Cloud Manager pour confirmer les lots à importer
com.google.common.*.
Résolution resolution
-
Code personnalisé utilisant Guava (AEMaaCS, AMS, On-Prem) : remplacez les utilitaires
com.google.commonpar des équivalents de JDK ou Apache Commons Collections 4. Par exemple, remplacezLists.partition()par une approche par lots basée sur un flux Java. Vérifiez en recherchant le projet :code language-none grep -R "com.google.common" ./src
Si la suppression de la fonctionnalité de Guava rompt à court terme, incorporez temporairement votre propre version de Guava (voir étape 5) et planifiez la refactorisation.
2. ACS AEM Commons pull Guava (AEMaaCS) : mettez à jour ACS AEM Commons vers au moins la version 6.11.0 et assurez-vous que classifier=cloud est défini conformément aux directives officielles. Recréez et vérifiez la sortie de l’analyseur pour vous assurer que Guava n’est plus signalé.
3. Exemples de packages de composants principaux (AEMaaCS) : supprimez tous les packages core.wcm.components.examples.* de votre module de all. Exécutez à nouveau mvn clean install et examinez le package de contenu créé pour confirmer que le package d’exemples a disparu. Vérifiez qu’il n’a pas été réintroduit par l’héritage POM parent.
4. Dépendances transitives de portée de test (AEMaaCS) : supprimez ou remplacez les bibliothèques de test telles que slf4j-test et io.wcm.testing.aem-mock.* qui font référence de manière transitoire à Guava. Réexécutez mvn dependency:tree pour confirmer com.google.common n’apparaît plus. Si la fuite persiste, configurez le plug-in du lot pour exclure le com.google.common.* de Import-Package.
5. AEM 6.5 On-Prem ou AMS — Incorporer Guava dans un lot personnalisé : si Guava est requis, incorporez ou grattez-le dans un lot personnalisé plutôt que de l’installer en tant que lot autonome (l’installation autonome est bloquée par sling_bootstrap.txt). Assurez-vous que le lot n’exporte pas ses packages Guava. Déployez et confirmez que le lot personnalisé affiche un état Active dans la console web.
6. Recréer et redéployer : exécutez un pipeline Cloud Manager complet (AEMaaCS) ou déployez le bundle OSGi par le biais du processus de déploiement AMS/On-Prem. Confirmez que l’étape Qualité du code se termine sans signaler les avertissements de com.google.common.* obsolètes.
7. Revalider : pour AEMaaCS, l’exécution du pipeline Cloud Manager complet redéclenche le même analyseur que celui qui crée les incidents du Centre d’actions. Si aucune utilisation obsolète n’est détectée, l’incident est résolu automatiquement. Actualisez le Centre des actions pour confirmer que l’incident est fermé.
Validation
- Exécutez
mvn dependency:treenouveau et confirmez qu’aucun module n’a été importécom.google.common.*. - Vérifiez les journaux de l’analyseur Cloud Manager après le déploiement pour confirmer qu’aucun avertissement de bibliothèque obsolète ne subsiste.
- Confirmez que le Centre de maintenance ne génère plus d’incidents de bibliothèque obsolète.
- Vérifiez qu’aucun lot personnalisé n’est importé
com.google.common.*l’aide de la console web OSGi ou des journaux de pipeline.