gpt4 book ai didi

java - Maven 拉取旧版本的传递依赖

转载 作者:行者123 更新时间:2023-11-29 07:27:53 27 4
gpt4 key购买 nike

我写了一个库,它依赖于 Guava 20.0 版(与 JDK 1.7 兼容的最后一个版本)

然后我编写了一个使用该库以及 uk.org.lidalia:slf4j-test:1.2.0(带有测试范围)的应用程序。 slf4j-test 依赖于 Guava 14.0.1 版本。

我的问题是我的应用程序将两个不同版本的 Guava 视为传递依赖项,并选择了较旧的版本。现在,当我在我的库中调用某些方法时,我得到类或方法未找到异常。

我可以(并且已经)将 Guava 排除在 slf4j-test 的依赖项之外,这暂时解决了问题,但如果我引入另一个使用 Guava 的依赖项,问题将再次出现。

所以我的问题是:为什么 Maven 会选择旧版本的依赖项,而我如何始终让它选择最新版本。

最佳答案

你不能强制 Maven 总是选择最新版本。但是您可以做几件事:

  1. 如果您在自己的 pom 中声明依赖项,则此版本总是胜出。因此,如果您的 pom 中依赖于 guava 20.0,您将得到这个。

  2. 如果这不合适,您可以在设置 guava 版本的 dependencyManagement 中添加一个条目。这将覆盖所有可传递设置的版本(如示例中的 14.0.1)。

  3. Maven enforcer 插件有一个规则,确保所有依赖项都评估为最新版本 - 但它不会选择最新版本,如果没有选择它,它只会使构建失败。那么你需要自己通过上面的方法(1)或(2)来选择它。

关于java - Maven 拉取旧版本的传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47696349/

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