2017-09-05 47 views
0

直到今天,我确信maven正在使用最近的依赖性赢得策略,但现在我不确定。最接近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在他们的劲歌依赖C与范围compile

因此,如果有人问我,我会得到什么样的版本和范围的C在我的申请第一个答案我想出的是,依赖关系C得到通过TestA并将有test范围,因为两者都在同一深度和TestA首先在pom中定义。但这是错误的。最后,我的申请将包含CTestB范围compile。我没有发现任何关于范围如何媒介的内容。为什么发生这种情况?

回答

0

在Maven构建的编译和包阶段,没有包含测试范围的依赖关系。由于TestB依赖于TestC进行编译,所以TestC被作为传递依赖添加到您的项目中。

+0

这是不正确的,即使我提供了而不是测试,然后maven正在更新提供编译。这似乎总是选择最大的范围。 – Hadson