【发布时间】:2017-06-08 04:48:58
【问题描述】:
我有一个 maven 项目 A,它使用一些 Java 库 B,这是 POM 中声明的依赖项。该库使用其他一些库C,它使用库D。问题出现在编译A 和C 都使用该库D 但版本不同的地方。它看起来像这样:
A ----- B
| |
D(v1) C
|
D(v2)
A 无法将其依赖更改为D(v2),但如果我在A 的POM 中排除D(v2):
<dependency>
<groupId>...</groupId>
<artifactId> C </artifactId>
<exclusions>
<exclusion>
<groupId>...</groupId>
<artifactId> D </artifactId>
<version> v2 </version>
</exclusion>
</exclusions>
</dependency>
我会得到编译错误,即某些类 MissingClass 在类 C 中未解决。最烦的是只有D(v2) 有那个Missing Class。
我对 Maven 不太熟练,所以有什么方法可以让 Maven 在 A 的情况下使用 D(v1) 依赖,在 B 的情况下使用 D(v2)?
【问题讨论】:
-
你不能。类路径中只能有一个版本的 D。如果
A与v2不兼容并且C与v1不兼容,那么您不能在项目中同时使用A和C。使用与v1兼容的旧版C。
标签: java maven jar dependencies version