有人可以解释一下人们在战争中如何获得不同版本的重复依赖关系?也许举一些例子
我无法理解我的生活。 Maven2具有传递依赖的依赖性中介
说我有:
A
- B
- C
B
- E
现在在项目X中,使用war包装我添加A和B作为依赖。
由于上述依赖中介,无论项目A中B的版本如何,在战争中我都会看到一个带有X中声明版本的B jar。
这是因为maven将使用与我的项目最接近的依赖项版本。
那么,我在这里错过了什么?人们怎么搞乱这个? 期待启蒙
答案 0 :(得分:0)
对于具有相同groupId和artifactId的冲突jar,maven将获取来自最后声明的依赖项的版本。
您可以使用依赖顺序。 只需更改项目X中A和B的依赖顺序。
场景1:此处由于2.5之后添加2.5,所以将打包2.5。
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
场景2:由于在2.5之后添加了2.3,所以将打包2.3。
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
您还可以尝试排除概念 here。