弄清楚战争中的重复依赖

时间:2017-02-08 12:46:20

标签: java maven-2

有人可以解释一下人们在战争中如何获得不同版本的重复依赖关系?也许举一些例子

我无法理解我的生活。 Maven2具有传递依赖的依赖性中介

说我有:

A
- B
- C

B
- E

现在在项目X中,使用war包装我添加A和B作为依赖。

由于上述依赖中介,无论项目A中B的版本如何,在战争中我都会看到一个带有X中声明版本的B jar。

这是因为maven将使用与我的项目最接近的依赖项版本。

那么,我在这里错过了什么?人们怎么搞乱这个? 期待启蒙

1 个答案:

答案 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