gpt4 book ai didi

maven-2 - Maven : how to override the dependency added by a library

转载 作者:行者123 更新时间:2023-12-03 04:43:57 25 4
gpt4 key购买 nike

这是我的一般问题:

我的项目 P 依赖于 A,A 又依赖于 B,而 B 又依赖于 C,而 C 又依赖于 D 的 1.0.1 版本。

D 1.0.1 版本有问题,我想强制使用另一个模块。我不知道如何在项目的 POM 中声明这一点,因为我没有直接添加对 D 的依赖项。是 C 声明了对 D 的依赖。

重要提示:在这种情况下,不仅版本会更改,组和工件也会更改。因此,这不仅仅是覆盖依赖项版本的问题,而是排除一个模块并包含另一个模块的问题。

在具体情况下,D 是 StAX,其 1.0.1 具有 bug 。根据错误中的注释,“通过用 stax-api-1.0-2 (maven GroupId = javax.xml.stream) 替换 stax-api-1.0.1 (maven GroupId = stax) 解决了问题”,所以我我正在尝试这样做。

因此,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>

最佳答案

只需在当前 pom.xml 中指定版本即可。此处指定的版本将覆盖其他版本。

Forcing a version
A version will always be honoured if it is declared in the current POM with a particular version - however, it should be noted that this will also affect other poms downstream if it is itself depended on using transitive dependencies.

<小时/>

资源:

关于maven-2 - Maven : how to override the dependency added by a library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com