【问题标题】:Build Failure in Jenkins, Found duplicate resources在 Jenkins 中构建失败,发现重复资源
【发布时间】:2015-05-11 01:20:51
【问题描述】:

我最近在 pom.xml 中添加了这个依赖

<dependency>
    <groupId>com.jayway.restassured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>2.4.0</version>
</dependency>

我的构建在 jenkins 中失败,并显示以下错误消息:

[WARNING] Found duplicate resources in [org.codehaus.groovy:groovy:2.3.7,org.codehaus.groovy:groovy-json:2.3.7,org.codehaus.groovy:groovy-xml:2.3.7] :
[WARNING]   META-INF/groovy-release-info.properties
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5:37.485s
[INFO] Finished at: Mon Mar 09 10:10:49 PDT 2015
[INFO] Final Memory: 46M/381M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving disabled
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.4:check (default) on project LightmileTest: Found duplicate classes/resources -> [Help 1]

【问题讨论】:

    标签: java eclipse maven jenkins rest-assured


    【解决方案1】:

    dependency:analyze-duplicate 分析pom.xml中的and标签,判断重复声明的依赖。

      mvn dependency:analyze-duplicate
    

    【讨论】:

      【解决方案2】:

      用于避免重复查找器。

      【讨论】:

      【解决方案3】:

      你可以做的是遵循范围的规则,也就是说,根据它们的范围来分离依赖,比如你的情况,放心用于测试,为什么不把它放在测试的范围内:

      <scope>test</scope>
      

      其次,我通常做的是在我的本地机器上执行来自 Jenkins 的完全相同的命令,通常它确实有帮助,从你的错误日志来看,我认为它不能放心相关,所以请尝试运行 Jenkins 上的 MVN 目标本地并确保您有相同的错误。如果没有,它可以是不同的 maven 配置,例如通过 Jenkins 机器中的 settings.xml。

      【讨论】:

        【解决方案4】:

        背景/细节

        我遇到了类似的问题,这让我陷入了一段时间的循环,我开始质疑我的 maven 知识并进行了一些挖掘。如果您想了解有关重复查找器的更多信息,可以阅读他们 github 上的自述文件:https://github.com/ning/maven-duplicate-finder-plugin

        对于我参与的项目,我确定我可以在依赖项中排除或向重复查找器添加例外。我在我的项目中看到了这两种情况,并想知道什么时候应该这样做。

        来自插件的消息有助于确定重复所在的位置。当您尝试添加新的依赖项时,您通常会看到这一点。当您看到这一点时,有两个选项,要么从依赖项中排除事物,要么在您的 com.ning.maven.plugins:duplicate-finder-maven-plugin 配置中创建异常。

        总结/结论

        添加异常,只是忽略问题。所以更简洁的方法是在依赖项中添加排除项。这样你就可以得到你所期望/想要的。此外,沿着异常路线走只会增加大量没有真正用处的额外工作。因此插件的目的是帮助您识别重复项,然后尝试通过依赖项中的排除来处理它们。

        如何排除的示例

        在您的示例/案例中,以下其中一项应该适合您:

        <dependency>
            <groupId>com.jayway.restassured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>2.4.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-json</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        

        <dependency>
            <groupId>com.jayway.restassured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>2.4.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        

        【讨论】:

          【解决方案5】:

          很可能你的新依赖在你通过 Maven 进行的测试中失败了(duplicate-finder-plugin)。从命令行(在 POM 文件级别)运行手动检查以找出有问题的类:

          mvn com.ning.maven.plugins:duplicate-finder-maven-plugin:1.0.4:check
          

          然后您可以删除依赖项或配置 Maven 插件以忽略这些。 (config here)

          【讨论】:

          • 我没有在我的 pom.xml 中使用重复查找器插件。但是我仍然因此而导致构建失败?
          • 控制台的最后一行显示此重复查找器插件正在运行并导致您的构建失败。如果您不是故意使用它,请将其删除并查看它是否有效。
          猜你喜欢
          • 2019-09-08
          • 1970-01-01
          • 1970-01-01
          • 2014-11-16
          • 1970-01-01
          • 1970-01-01
          • 2019-10-04
          • 1970-01-01
          • 2020-06-24
          相关资源
          最近更新 更多