maven警告:使用同一工件的两种不同类型的依赖时的重复版本

时间:2016-04-21 18:59:54

标签: maven dependencies pom.xml

Maven在构建我们的多模块项目时抛​​出一个奇怪的警告。我只是在另一个项目中引用同一项目的 jar test-jar 。两个依赖项都具有 test 范围。我正在运行Maven 3.3.1并且无法轻松升级版本。

你是否有人知道如何在不从maven发出此警告的情况下解决问题?

ProjectA的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>

来自maven的警告(匿名):

  

[警告]在构建org.group.ProjectA的有效模型时遇到了一些问题:1.0-SNAPSHOT   [警告]'dependencies.dependency。(groupId:artifactId:type:classifier)'必须是唯一的:$ {project.groupId}:org.group.ProjectB:jar - &gt;重复声明版本$ {project.version} @ org.group.ProjectA,/ var / lib / jenkins / jobs / nickjob /workspace / org.group.ProjectA / pom.xml,第130行,第15栏

1 个答案:

答案 0 :(得分:0)

test-jar documentation我会说两个神器基本上是同一个,而且#34; test-jar&#34;因为它包含测试类,所以预计不会在测试阶段使用它。

一个好方法可能是:

  • 保留&#34;标准&#34;编译范围中的依赖关系(如果你确实需要它提供的非测试类)
  • 使用&#34; test-jar&#34;依赖关系仅作为surefire-plugin的additional dependency declaration(带有测试范围),因此它仅由插件本身使用