Maven Transitive依赖关系流如何工作?

时间:2017-11-15 05:47:34

标签: java spring maven java-ee pom.xml

我是Maven的新手,所以仍然试图了解它是如何工作的。我有一个库 B ,它依赖于 A 。因此,依据 B 添加 A 。 我的项目 C 依赖于 B 以及 A 。 因此,如果我在C&P的POM中添加B库,那么传递依赖应该起作用,C应该看到A. C - > B - > A

我看到我的同事在C&P的POM中写了类似的内容:

<dependency>
        <groupId>B</groupId>
        <artifactId>B</artifactId>
        <version>1.0</version>
        <exclusions>
            <exclusion>
                <groupId>C</groupId>
                <artifactId>C</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>C</groupId>
        <artifactId>C</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>

当我查看B&P的pom时,我发现没有包装信息。所以它既不是罐子也不是战争。它只是用于图书馆。

我的问题是,库(B)依赖模块是否作为传递依赖项传递给项目(C),项目(C)在其依赖项中使用库(B)。

1 个答案:

答案 0 :(得分:0)

是:Maven解析整个依赖关系树,然后相应地配置您的项目。您可以通过目标dependency:tree

查看此解决方案

如果在项目 C 中加入 B ,Maven会读取 B pom.xml,其中包括 A 过渡性。 Maven然后展平这棵树,解决冲突(如果有的话),并为你的项目配置两个依赖项。

您的项目 C 现在可以访问 A B ,就好像它们已经集成一样。

请注意,Eclipse中的Maven插件(如果您使用它)非常智能,如果您的工作区中有可用的JAR或项目文件,则可以决定直接使用它们。这可能会导致一些混乱,但是很好;它有效。