最佳答案
这是我的一般问题:
我的项目 P 依赖于 A,它依赖于 B,它依赖于 C,它依赖于 D 的1.0.1版本。
D 版本1.0.1有一个问题,我想强制使用另一个模块。我不知道如何在项目的 POM 中声明这一点,因为我没有直接添加对 D 的依赖。是 C 声明了对 D 的依赖关系。
重要提示: 在这种情况下,不仅版本发生了变化,而且组和工件也发生了变化。所以这不仅仅是覆盖依赖项版本的问题,而是排除一个模块并包含另一个模块的问题。
在具体的例子中,D 是 StAX,它的1.0.1有一个 臭虫。根据 bug 中的说明,“通过将 stax-api-1.0.1(专家 GroupId = stax)替换为 stax-api-1.0-2(专家 GroupId = javax.xml.stream) ,问题得到了解决。”。
因此,D = stax: stax-api: jar: 1.0.1和 C = org.apache.xmlbeans: xmlbeans: jar: 2.3.0
我用的是 Maven2.0.9以防万一。
Mvn 依赖项的输出: 树”
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>