배포 중 더 이상 사용되지 않는 Guava(com.google.common) 라이브러리 사용이 감지됨 해결 중
더 이상 사용되지 않는 com.google.common(Google Guava) API가 검색되면 AEM 배포가 실패하거나 작업 센터 경고를 트리거합니다. Cloud Manager은 전이적 및 테스트 범위 종속성을 포함한 모든 OSGi 가져오기를 검사하므로 프로젝트가 Guava에 명시적으로 의존하지 않는 경우에도 경고가 표시됩니다. 이 수정 사항은 소스에 따라 다릅니다. 오래된 ACS AEM Commons, 핵심 구성 요소 예제 패키지, 테스트 라이브러리 또는 Guava 유틸리티를 직접 참조하는 사용자 지정 코드. Guava 종속성을 제거하거나 대체한 다음 재배포하고, 경고를 지우고, 작업 센터 인시던트를 닫습니다.
설명 description
문제: Cloud Manager은 배포 중 더 이상 사용되지 않는 com.google.common(Guava) 사용을 플래그로 표시합니다
설명
Cloud Manager 및 AEM API 사용 중단 스캐너 플래그는 com.google.common.*의 사용을 중단합니다. 이 경고는 Cloud Manager에서 추이적 및 테스트 범위 종속성을 포함한 OSGi 가져오기를 검사하므로 프로젝트에 명시적 Guava 종속성이 없는 경우에도 표시됩니다. 이 문제는 AEMaaCS, Managed Services 및 On-Premise 환경에 영향을 줍니다.
환경:
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Managed Services (AMS)
- AEM 6.5 LTS On-Premise
- Cloud Manager(빌드 및 코드 품질 파이프라인)
문제/증상:
- 작업 센터 경고:
Deprecated Library Detected — com.google.common com.google.common.collect과(와) 같은 패키지를 참조하는 Cloud Manager 분석기 로그 경고- 더 이상 사용되지 않는 라이브러리 사용으로 인해 파이프라인 코드 품질 단계가 일시 중지되거나 실패합니다
- OSGi 검사기는 전환 테스트 종속성만 있는 경우에도 번들 가져오기
com.google.common.*을(를) 확인합니다.
근본 원인:
com.google.common API는 완전히 더 이상 사용되지 않으며 AEM as a Cloud Service에서 제거될 예정입니다. Cloud Manager은 종속성이 명시적, 전이적 또는 테스트 범위인지 여부에 관계없이 com.google.common.*을(를) 가져오는 모든 번들에 플래그를 지정합니다. 오래된 ACS AEM Commons 버전, 핵심 구성 요소 예제 패키지, io.wcm 테스트 라이브러리, slf4j-test, sling-mock, Asset Share Commons 또는 Lists.partition()과(와) 같은 Guava 유틸리티를 사용하는 사용자 지정 코드에서 사용이 중단됩니다. AEM 6.5 LTS 및 온프레미스에서 Guava는 sling_bootstrap.txt 제한 사항으로 인해 더 이상 제공되지 않으며 독립 실행형 번들로 설치할 수 없습니다.
확인하는 방법
-
핵심 번들 모듈에서 다음 을 실행하여 테스트 범위를 포함하여 Guava에서 가져오는 모든 종속성을 식별합니다.
code language-none mvn dependency:tree -Dincludes=com.google.guava:*,com.google.common:* -
출력을 검토하여 소스가 직접인지 또는 전이인지를 확인하고 아래 수정 경로 중 하나에 일치시킵니다.
-
Cloud Manager 분석기 로그를 사용하여 상호 참조하여
com.google.common.*을(를) 가져오는 번들을 확인하십시오.
해결 방법 resolution
-
Guava(AEMaaCS, AMS, On-Prem)를 사용하는 사용자 지정 코드:
com.google.common유틸리티를 JDK 또는 Apache Commons Collections 4에 해당하는 것으로 바꿉니다. 예를 들어Lists.partition()을(를) Java 스트림 기반 일괄 처리 접근 방식으로 바꾸십시오. 프로젝트를 검색하여 확인합니다.code language-none grep -R "com.google.common" ./src
Guava를 제거하면 단기적으로 기능이 중단됩니다. 자신의 Guava 버전을 일시적으로 포함하고(5단계 참조) 리팩터링을 계획하십시오.
2. AEMaaCS(Guava)를 가져오는 ACS AEM Commons: ACS AEM Commons를 최소 버전 6.11.0(으)로 업데이트하고 공식 지침에 따라 classifier=cloud이(가) 설정되었는지 확인합니다. Guava가 더 이상 보고되지 않는지 확인하기 위해 Analyzer 출력을 다시 빌드하고 확인합니다.
3. 핵심 구성 요소 예제 패키지(AEMaaCS): all 모듈에서 모든 core.wcm.components.examples.* 패키지를 제거합니다. mvn clean install을(를) 다시 실행하고 빌드된 콘텐츠 패키지를 검사하여 예제 패키지가 제거되었는지 확인합니다. 상위 POM 상속에 의해 다시 도입되지 않았는지 확인하십시오.
4. AEMaaCS(테스트 범위 전이적 종속성): Guava를 전이적으로 참조하는 slf4j-test 및 io.wcm.testing.aem-mock.*과(와) 같은 테스트 라이브러리를 제거하거나 바꿉니다. mvn dependency:tree을(를) 다시 실행하여 com.google.common이(가) 더 이상 나타나지 않음을 확인하십시오. 누출이 계속되면 Import-Package에서 com.google.common.*을(를) 제외하도록 번들 플러그인을 구성하십시오.
5. AEM 6.5 On-Prem 또는 AMS — 사용자 지정 번들 내에 Guava 포함: Guava가 필요한 경우 독립 실행형 번들로 설치하지 않고 사용자 지정 번들 내에 Guava를 포함하거나 숨깁니다(독립 실행형 설치는 sling_bootstrap.txt에 의해 차단됨). 번들이 Guava 패키지를 내보내지 않는지 확인합니다. 사용자 지정 번들을 배포하고 확인하면 웹 콘솔에 Active 상태가 표시됩니다.
6. 다시 빌드 및 다시 배포: AMS/On-Prem 배포 프로세스를 통해 전체 Cloud Manager 파이프라인(AEMaaCS)을 실행하거나 OSGi 번들을 배포합니다. 더 이상 사용되지 않는 com.google.common.* 경고를 보고하지 않고 코드 품질 단계가 완료되었는지 확인하십시오.
7. 유효성 재검사: AEMaaCS의 경우 전체 Cloud Manager 파이프라인을 실행하면 작업 센터 인시던트를 만드는 동일한 스캐너가 다시 트리거됩니다. 더 이상 사용되지 않는 사용이 감지되지 않으면 인시던트가 자동으로 해결됩니다. 작업 센터를 새로 고쳐 문제가 종료되었는지 확인합니다.
유효성 검사
mvn dependency:tree을(를) 다시 실행하고 모듈 가져오기com.google.common.*이(가) 없는지 확인합니다.- 배포 후 Cloud Manager Analyzer 로그를 확인하여 더 이상 사용되지 않는 라이브러리 경고가 없는지 확인합니다.
- 확인 작업 센터는 더 이상 사용되지 않는 라이브러리 인시던트를 생성하지 않습니다.
- OSGi 웹 콘솔 또는 파이프라인 로그를 사용하여 사용자 지정 번들 가져오기
com.google.common.*이(가) 없는지 확인합니다.