在Maven依赖关系树中,父依赖关系是否会覆盖子范围?

时间:2019-06-04 08:30:08

标签: java maven

如果我从运行mvn dependency:tree得到以下输出,则这些jar是否已进入测试或编译范围?

[INFO] |  +- io.springfox:springfox-swagger1:jar:2.5.0:test
[INFO] |  |  +- io.springfox:springfox-schema:jar:2.5.0:compile
[INFO] |  |  +- io.springfox:springfox-swagger-common:jar:2.5.0:compile

2 个答案:

答案 0 :(得分:3)

它将是test。但这不是 all 作用域对的一般规则。就您而言,这适用于:

  

对于test范围,runtimecompile范围的传递依赖关系都将在项目中与test范围一起引入。

更多详细信息,请访问https://www.baeldung.com/maven-dependency-scopes

答案 1 :(得分:3)

在您的示例中,所有三个依赖项均有效地test范围内。根据{{​​3}},compile作用域依赖性的任何可传递test作用域依赖性将成为test作用域:

  

每个作用域(导入除外)都会以不同方式影响传递依赖关系,如下表所示。如果将依赖项设置为左列中的范围,则该依赖项的可传递依赖项与顶部行中的范围将导致在主项目中具有相交处列出的范围的依赖项。如果未列出作用域,则表示将忽略依赖项。

            compile     provided        runtime     test
compile     compile     -               runtime     -
provided    provided    -               provided    -
runtime     runtime     -               runtime     -
test        test        -               test        -