gpt4 book ai didi

java - Maven的依赖管理中的"Group pressure"

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:01 26 4
gpt4 key购买 nike

我在使用 Maven 时遇到一个问题,在我的项目 A 中,库 com.google.guava 在多层传递依赖项中被引用了大约六次.几乎所有这些依赖项都需要古老的版本 18.0

我已经编写了另一个依赖项B,它也在项目A 中使用。这种依赖关系直接依赖于 com.google.guava28.0 版本,但 Maven 仍然选择 18.0 而不是更新的版本。

除非我在所有依赖于 B 的项目中明确包含较新版本,否则由于 NoMethodError 等原因,该库将无法运行。如果我这样做,我可能会遇到所有其他库的问题,因为新的二进制不兼容版本的依赖项。

实际上,我正在承受使用旧版本依赖项的群体压力,因为其他人都这样做

为什么 Maven 不选择最新版本呢?我该怎么做才能说服 Maven 在所有依赖于 B 的项目中使用更新版本?

有没有一种方法可以分离关注点并让所有其他依赖项实际使用 18.0 而我的依赖项使用 28.0

如果只是稍微大一点的包大小是为跨项目支付更多现代图书馆的奖励......

也许有可能为我的库 B 硬链接(hard link)某个依赖版本,所以只有我的库使用较新的版本?

最佳答案

在maven中你可以使用<dependencyManagement>

使用此标记,您可以明确告诉 Maven 您希望项目使用哪个版本的依赖项。

对于 Guava ,你可以这样做:

<dependencyManagement>
<dependencies>

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.0</version>
</dependency>

...
</dependencies>
</dependencyManagement>

然后你可以这样做:

    <dependencies>

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>

...
</dependencies>

这将强制 maven 使用 guava 18 依赖

关于java - Maven的依赖管理中的"Group pressure",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56855895/

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