【发布时间】:2018-02-16 17:48:40
【问题描述】:
好的,我会花很多精力来解释复杂性。我正在做一个项目,比如说“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 从另一个父项目继承了这个 module-X 对版本 1 的依赖,所以 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>
发生的冲突如下:在 Project-A 中,在使用 module-X 的 Project-B-function 中,此函数使用 version_2 它使用从 Project-C 导入的 version_1 (当然会弹出错误)。
如果满足以下条件,问题将得到解决:
a) 一切都在 version_2 上使用 module-X。
b) 项目-B 使用版本_2,项目-C 使用版本_1,这两者不会混淆。
除了我的(项目-A)之外,我无权更改任何其他 POM。我尝试在 project-C 依赖项上使用排除项(针对 module-X),但它不起作用,因为 module-X 不在 project-C 的 POM 中,而是在其父级中。
那么,有什么想法吗?谢谢!
【问题讨论】:
标签: java maven jakarta-ee intellij-idea dependencies