maven 警告 : duplicate version when using two different types of dependecy of the same artifact

标签 maven dependencies pom.xml

Maven 在构建我们的多模块项目时抛​​出了一个奇怪的警告。我只是在另一个项目中引用同一项目的 jar 和 test-jar。两个依赖项都有测试范围。我正在运行 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(匿名)的警告:

[WARNING] Some problems were encountered while building the effective model for org.group.ProjectA:1.0-SNAPSHOT [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: ${project.groupId}:org.group.ProjectB:jar -> duplicate declaration of version ${project.version} @ org.group.ProjectA, /var/lib/jenkins/jobs/nicejob/workspace/org.group.ProjectA/pom.xml, line 130, column 15

最佳答案

test-jar documentation我会说这两个 Artifact 基本上是相同的,并且“test-jar”一个不应在测试阶段之外使用,因为它包含测试类。

一个好的方法可能是:

  • 将“标准”依赖项保留在编译范围内(如果您确实需要它来提供它提供的非测试类)
  • 使用“test-jar”依赖作为 additional dependency declaration (带有测试范围)仅适用于surefire-plugin,因此它仅由插件本身使用
  • 关于 maven 警告 : duplicate version when using two different types of dependecy of the same artifact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778275/

    相关文章:

    Maven 循环属性定义

    java - Maven项目运行良好,但很多项目在intellij中带有红色下划线

    javascript - 不使用 run() 编写 gulpfile.js

    java - 对于maven依赖,如何找出哪个Java类中的哪个导入来自它?

    Maven 排除传递依赖的传递依赖

    dependencies - 使用不同的启动级别来管理 OSGi 包之间的依赖关系是否合理?

    pom.xml - 项目构建错误 : Non-resolvable parent POM in maven

    java - Intellij 使用 Maven 输出目录

    android - 从 Jenkins 传递 MAVEN 配置文件参数

    java - Jboss 上的 Drools 项目使用什么 Maven 3 原型(prototype)?