쉐이드 플러그인으로 생성된 종속성 감소 pom.xml의 목적은 무엇입니까?
그 문서를 읽어봤지만 그 용도가 적힌 건 아무것도 못 찾았어요
음영: Shade Mojo는 상당히 잘 문서화되어 있습니다. 특히 여기에createDependencyReducedPom
파라미터가 작성됩니다.dependency-reduced-pom.xml
파일:
즉, 다른 모듈의 의존관계로서 (일반적인 JAR이 아닌) 음영 처리된 JAR을 사용하는 경우에는 매우 편리합니다.그거dependency-reduced-pom.xml
는 음영 처리된 JAR에 이미 존재하는 JAR을 포함하지 않으므로 불필요한 중복을 방지합니다.
백 번 정도 문서를 읽었는데도 이게 무슨 용도가 있는지, 실제로 어떤 용도가 있는지 이해할 수 없었습니다.
마지막으로 다음과 같이 생각합니다.A, B, C, D, E에 의존관계가 있는 프로젝트가 있다고 합시다.pom.xml
shead 플러그인이 uber-jar를 생성할 때(이것을 shead plugin이라고 부릅니다)로 설정합니다.foo.jar
A, B, C를 음영 처리된 병에 포함시키지만 어떤 이유로 음영 처리된 병에 D, E를 포함하지 않기로 결정하게 됩니다.예를 들어 테스트에만 필요한 의존관계(예를 들어 D, E를 포함하는 의존관계)가 대표적인 예입니다.scope
의test
음영 처리된 병에 포함되지 않습니다.)그dependency-reduced-pom.xml
D, E를 정의합니다.그 아이디어는 만약 누군가가 이 기술을 사용하고 싶다면foo.jar
그dependency-reduced-pom.xml
주의할 만한 힌트를 주다foo.jar
에는 의존관계 D, E가 누락되어 있습니다.자신의 책임 하에 사용하세요.그런 다음 D, E를 프로젝트에 명시적으로 추가하기로 결정할 수 있습니다.foo.jar
.
그래서...dependency-reduced-pom.xml
에 가깝다missing-dependencies.xml
및 쉐이드 플러그인으로 출력되는 uber-jar에 없는 의존관계를 나타냅니다.
단답
dependency-reduced-pom.xml은 음영 처리된 jar에 이미 있는 전이 종속성을 제거합니다.이것은 소비자들이 그것들을 두 번 끌어당기는 것을 방지한다.
장황한 답변
항아리에 그늘을 드리우는 데는 몇 가지 이유가 있다.
모든 종속성이 번들된 실행 가능한 jar를 생성하는 경우 패키지 저장소에 업로드하고 사용자가 수동으로 다운로드하는 경우가 많습니다.이 시나리오에서는 dependency-reduced-pom.xml은 아무것도 하지 않습니다.
또 다른 이유는 라이브러리를 구축하고 있으며 다른 공통 라이브러리의 특정 버전을 사용하고 있기 때문입니다.사용자에게 사용자와 동일한 버전을 사용하도록 강요하지 않을 수 있습니다.음영 처리를 통해 이러한 종속성에 효과적으로 네임스페이스를 지정하면 사용자는 동일한 라이브러리를 다른 버전으로 다시 포함할 수 있습니다.
이 경우 원본 POM을 업로드하면 라이브러리에 의존하는 사용자는 모든 종속성을 두 번 불러옵니다.한 번은 음영 처리된 복사본에서, 한 번은 폼에서 선언된 복사본에서.대신 dependency-reduced-pom.xml을 업로드하면 음영 처리된 종속성 선언이 제거되므로 이러한 문제가 발생하지 않습니다.
★★★의 dependency-reduced-pom.xml
준비 중인 아티팩트의 최종 종속성 세트를 보여 줍니다.
인공물이라고 X
의존하다A
★★★★★★★★★★★★★★★★★」B
B
에 의존하여 maven-filen-filen에만 .A
'이렇게'라는 거예요.dependency-reduced-pom.xml
주마B
을 사용법률의은 원래 Maven이 입니다.pom.xml
집합을 할 때 합니다.X
이 에 X
하지 않다B
.
언급URL : https://stackoverflow.com/questions/22904573/what-is-the-purpose-of-dependency-reduced-pom-xml-generated-by-the-shade-plugin
'programing' 카테고리의 다른 글
Apache2에서 호스팅하는 Vue 라우터 (0) | 2022.10.29 |
---|---|
mysql - 월별 및 년별 합계 (0) | 2022.10.29 |
TypeScript에서 문자열 보간을 수행하는 방법은 무엇입니까? (0) | 2022.10.28 |
jQuery를 사용하여 JS 개체를 배열로 변환 (0) | 2022.10.28 |
JAR 내에 JAR을 포함한 클래스 패스 (0) | 2022.10.28 |