gpt4 book ai didi

java - Maven:编辑父级的 POM 依赖项(排除或更新其版本)

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:12 24 4
gpt4 key购买 nike

好吧,我会花很多精力来解释这个复杂的情况。我正在做一个项目,假设是“A”。该项目有另外两个项目作为依赖项,假设“B”和“C”。所以,Project-A 的 POM 是这样的:

<Project A>
<dependencies>
<dependency>Project B</dependency>
<dependency>Project C</dependency>
</dependencies>
</Project A>

Project-B 和 Project-C 都使用一个模块,假设为“module-X”。 Project-B POM 在版本 2 上具有此 module-X 作为依赖项,因此 Project-B POM 如下所示:

<Project B>
<dependencies>
<dependency>ModuleX_version_2</dependency>
</dependencies>
</Project B>

但是,Project-C 从另一个父项目继承了对版本 1 的 module-X 依赖关系,因此 Project-C POM 类似于:

<Project C>
<parent>
< Project-C-Parent >
</parent>
</Project C>

最后 Project-C-Parent 是这样的:

<Project C-Parent>
<dependencies>
<dependency>ModuleX_version_1</dependency>
</dependencies>
</Project C-Parent>

发生的冲突如下:在项目 A 中,在使用模块 X 的项目 B 函数中,该函数使用版本_2,而使用从项目 C 导入的版本_1(当然会弹出错误)。

如果满足以下条件,问题就会得到解决:
a) 所有内容都使用 version_2 上的 module-X。
b) 项目 B 使用 version_2,项目 C 使用 version_1,不要混淆这两者。

除了我的(项目 A)之外,我无权更改任何其他 POM。我尝试在项目 C 依赖项上使用排除(对于模块 X),但它不起作用,因为模块 X 不存在于项目 C 的 POM 中,而是存在于其父项中。

那么,有什么想法吗?谢谢!

最佳答案

在 A pom 中提及 X 的正确版本,并且将使用该版本。换句话说,将 X 依赖项显式添加到 A pom.xml 中。这告诉 Maven 你想要哪个版本的 X。

这将使 A 依赖于 X 的指定版本。例如,如果 A 创建了一个 war,那么该 war 将包含指定版本的 X jar。

请注意,如果两个不同版本的 X 彼此不兼容,那么您在 C 中调用的代码可能会出现问题(maven 对此无能为力)。请参阅this question for related information .

关于java - Maven:编辑父级的 POM 依赖项(排除或更新其版本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105669/

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