Resolviendo el uso obsoleto de la biblioteca com.google.common (Guava) detectado durante la implementación
Las implementaciones de AEM generan errores o generan déclencheur en las alertas del Centro de acciones cuando se detecta la API obsoleta com.google.common (Google Guava). Cloud Manager inspecciona todas las importaciones de OSGi, incluidas las dependencias transitivas y de ámbito de prueba, por lo que la advertencia aparece incluso cuando un proyecto no depende explícitamente de Guava. La corrección depende de la fuente: AEM Commons ACS obsoleto, paquetes de ejemplo de componentes principales, bibliotecas de prueba o código personalizado que haga referencia directamente a las utilidades de Guava. Al eliminar o reemplazar la dependencia de Guava y, a continuación, volver a desplegar, se borra la alerta y se cierra el incidente del Centro de acciones.
Descripción description
Problema: Cloud Manager marca el uso obsoleto de com.google.common (Guava) durante la implementación
Descripción
Cloud Manager y el analizador de desaprobación de API de AEM marcan el uso obsoleto de com.google.common.*. La advertencia aparece incluso cuando un proyecto no tiene una dependencia explícita de Guava, ya que Cloud Manager inspecciona las importaciones de OSGi, incluidas las dependencias transitivas y de ámbito de prueba. El problema afecta a los entornos AEMaaCS, Managed Services y On-Premise.
Entorno:
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Managed Services (AMS)
- AEM 6.5 LTS local
- Cloud Manager (canalizaciones de compilación y calidad del código)
Problema/Síntomas:
- Alerta del Centro de acciones:
Deprecated Library Detected — com.google.common - Cloud Manager Analyzer registra advertencias que hacen referencia a paquetes como
com.google.common.collect - El paso Calidad del código de canalización se pausa o falla debido a un uso de biblioteca obsoleto
- El inspector de OSGi confirma la importación de paquetes
com.google.common.*incluso cuando solo es una dependencia de prueba transitiva
Causa principal:
La API com.google.common está totalmente obsoleta y se ha programado para su eliminación en AEM as a Cloud Service. Cloud Manager marca cualquier paquete que importe com.google.common.*, independientemente de si la dependencia es explícita, transitiva o de ámbito de prueba. El uso obsoleto puede proceder de versiones obsoletas de ACS AEM Commons, paquetes de ejemplo de componentes principales, io.wcm bibliotecas de prueba, slf4j-test, sling-mock, Asset Share Commons o código personalizado con utilidades de Guava como Lists.partition(). En AEM 6.5 LTS y On-Premise, Guava ya no se envía y no se puede instalar como paquete independiente debido a sling_bootstrap.txt restricciones.
Cómo confirmar
-
Ejecute lo siguiente en el módulo del paquete principal para identificar todas las dependencias que se extraen de Guava, incluido el ámbito de la prueba:
code language-none mvn dependency:tree -Dincludes=com.google.guava:*,com.google.common:* -
Revise el resultado para confirmar si el origen es directo o transitivo y haga coincidir con una de las rutas de corrección siguientes.
-
Referencia cruzada con los registros del analizador de Cloud Manager para confirmar qué paquetes importan
com.google.common.*.
Resolución resolution
-
Código personalizado con guava (AEMaaCS, AMS, local): Reemplace
com.google.commonutilidades con JDK o Apache Commons Collections 4 equivalentes. Por ejemplo, reemplaceLists.partition()con un método de agrupamiento basado en secuencias de Java. Verifique buscando en el proyecto:code language-none grep -R "com.google.common" ./src
Si la eliminación de la guayaba rompe la funcionalidad a corto plazo, incruste temporalmente su propia versión de guayaba (consulte el paso 5) y planifique la refactorización.
2. ACS AEM Commons extracción de guayaba (AEMaaCS): Actualice ACS AEM Commons al menos a la versión 6.11.0 y asegúrese de que classifier=cloud esté establecido según las directrices oficiales. Vuelva a compilar y compruebe el resultado del analizador para confirmar que ya no se informa de Guava.
3. Paquetes de ejemplo de componentes principales (AEMaaCS): Elimine todos los core.wcm.components.examples.* paquetes de su módulo all. Vuelva a ejecutar mvn clean install e inspeccione el paquete de contenido generado para confirmar que el paquete de ejemplos ha desaparecido. Compruebe que la herencia del POM principal no la haya vuelto a introducir.
4. Dependencias transitivas de ámbito de prueba (AEMaaCS): Quite o reemplace bibliotecas de prueba como slf4j-test y io.wcm.testing.aem-mock.* que hacen referencia transitiva a Guava. Volver a ejecutar mvn dependency:tree para confirmar com.google.common ya no aparece. Si la fuga persiste, configure el complemento del paquete para excluir com.google.common.* de Import-Package.
5. AEM 6.5 local o AMS: incruste guava dentro de un paquete personalizado: Si se requiere guava, incrústela o sombreela dentro de un paquete personalizado en lugar de instalarla como un paquete independiente (la instalación independiente está bloqueada por sling_bootstrap.txt). Asegúrese de que el paquete no exporte sus paquetes Guava. Implemente y confirme que el paquete personalizado muestra un estado Active en la consola web.
6. Reconstruir y volver a implementar: Ejecute una canalización de Cloud Manager completa (AEMaaCS) o implemente el paquete OSGi a través del proceso de implementación de AMS/On-Prem. Confirme que el paso Calidad del código se completa sin informar de las advertencias de com.google.common.* obsoletas.
7. Revalidar: Para AEMaaCS, ejecutar la canalización de Cloud Manager completa vuelve a déclencheur el mismo analizador que crea incidentes del Centro de acciones. Si no se detecta ningún uso obsoleto, el incidente se resuelve automáticamente. Actualice el Centro de acciones para confirmar que el incidente está cerrado.
Validación
- Vuelva a ejecutar
mvn dependency:treey confirme que no hay módulos que importarcom.google.common.*. - Compruebe los registros del analizador de Cloud Manager después de la implementación para confirmar que no quedan advertencias de biblioteca obsoletas.
- Confirmar que el Centro de acciones ya no genera incidentes obsoletos de la biblioteca.
- Compruebe que no hay importaciones de paquetes personalizados
com.google.common.*que usen la consola web OSGi o los registros de canalización.