2016-04-21 24 views
3

Maven在建立我们的多模块项目时会引发奇怪的警告。我只是参考了另一个项目中相同项目的罐子测试罐。两个依赖关系都有测试范围。我正在运行Maven 3.3.1,无法轻松升级版本。maven警告:使用两个不同类型的相同工件的相依性时的复制版本

有没有人有一个想法,我怎么能解决这个问题,而不会从maven得到这个警告?项目A的

的pom.xml:

<dependency> <!-- This is line 130 --> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>projectB</artifactId> 
     <version>${project.version}</version> 
     <type>test-jar</type> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>projectB</artifactId> 
     <version>${project.version}</version> 
     <scope>test</scope> 
    </dependency> 

从行家警告(匿名):

[警告]还有一些问题,同时为org.group有效模型遇到.ProjectA:1.0-SNAPSHOT [WARNING]'dependencies.dependency。(groupId:artifactId:type:classifier)'必须是唯一的:$ {project.groupId}:org.group.ProjectB:jar - > versio的重复声明N $ {} project.version @ org.group.ProjectA,/var/lib/jenkins/jobs/nicejob/workspace/org.group.ProjectA/pom.xml,线130,列15

+0

的问题只用是你无论是在范围测试,才有意义的'测试 - 定义罐子'。 – khmarbaise

+0

为什么添加模块的生产代码作为测试范围的依赖关系是没有意义的? – MKorsch

回答

0

看着test-jar documentation我会说这两个工件基本上是一样的,而且由于它包含测试类,所以“测试jar”不会被用于测试阶段。

一个好的方法可以是:

  • 留在编译范围“标准”的依赖关系(如果你真的需要它提供非测试类)
  • 使用“测试罐子”的依赖作为additional dependency declaration(与测试范围)的神火,插件而已,所以,它的通过插件本身
相关问题