最近的胜利maven策略是否被范围覆盖? maven究竟如何确定范围?

时间:2017-09-05 17:57:43

标签: maven

直到今天我确信maven正在使用最接近的依赖胜利策略,但现在我不确定。

我的项目包含以下两个依赖项:

        <dependency>
           <groupId>TestA</groupId>
           <artifactId>TestA</artifactId>
           <version>1.0</version>
           <scope>test</scope>
       </dependency>

        <dependency>
           <groupId>TestB</groupId>
           <artifactId>TestB</artifactId>
           <version>1.0</version>
       </dependency>

AB的poms依赖项C的范围为compile

因此,如果有人问我在我的应用程序中首先得到的C的版本和范围,我想出的是依赖CTestA并且会{ {1}}范围,因为两者都在相同的深度,test首先在pom中定义。但那是错的。最后,我的应用程序将包含来自TestA的{​​{1}},范围为C。我没有找到关于范围如何被媒体化的任何信息。为什么会这样?

1 个答案:

答案 0 :(得分:0)

在Maven构建的编译和打包阶段,没有包含测试作用域的依赖项。由于TestB依赖于TestC进行编译,因此TestC将作为传递依赖项添加到您的项目中。