내 일반적인 문제는 다음과 같습니다.
내 프로젝트 P는 D의 버전 1.0.1에 의존하는 C에 의존하는 B에 의존하는 A에 의존합니다.
D 버전 1.0.1에 문제가 있으며 다른 모듈을 강제로 사용하고 싶습니다. D에 대한 종속성을 직접 추가하지 않았기 때문에 프로젝트의 POM에서 이것을 선언하는 방법을 모르겠습니다. D에 대한 종속성을 선언 한 것은 C입니다.
중요 :이 경우 버전뿐만 아니라 그룹 및 아티팩트도 변경됩니다. 따라서 종속성 버전을 재정의하는 문제가 아니라 모듈을 제외하고 다른 모듈을 포함하는 것입니다.
구체적인 경우 D는 1.0.1에 버그 가있는 StAX입니다 . 버그의 메모에 따르면 "stax-api-1.0.1 (maven GroupId = stax)을 stax-api-1.0-2 (maven GroupId = javax.xml.stream)로 대체하여 문제가 해결되었습니다." 그냥 시도하고 있어요.
따라서 D = stax : stax-api : jar : 1.0.1 및 C = org.apache.xmlbeans : xmlbeans : jar : 2.3.0
중요한 경우를 대비하여 maven 2.0.9를 사용하고 있습니다.
mvn dependency : tree "의 출력
mvn dependency:tree
[..snip..]
[INFO] +- org.apache.poi:poi-ooxml:jar:3.6:compile
[INFO] | +- org.apache.poi:poi-ooxml-schemas:jar:3.6:compile
[INFO] | | +- org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile
[INFO] | | | \- stax:stax-api:jar:1.0.1:compile
내 프로젝트의 POM에서 "A"에 다음과 같은 종속성이 있습니다.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.6</version>
</dependency>
미리 감사드립니다.