【问题标题】:Gradle build succeeds even though dependencies can't be downloaded即使无法下载依赖项,Gradle 构建也会成功
【发布时间】:2014-02-21 17:41:16
【问题描述】:

我们是 Gradle 和依赖解析的新手。我正在为我们所有内部生成的工件创建 pom.xml 文件,并希望在我们的 Jenkins 服务器中设置一个作业,以验证依赖项是否正确定义且不冲突(即 LibA 需要 x-1.0.jar、LibB需要 x-1.1.jar,而 AppY 需要 LibA 和 LibB)。

因此,我在 SVN 中建立了一个虚拟项目,它简单地包含了一堆我们的内部工件作为依赖项。在 TTD 之后,我故意在声明中包含了一些错误(即组和名称,但不是版本)。果然找不到那些依赖。

但是当我使用 gradle(即 gradle 依赖项)运行此构建时,它包含所有失败消息,但仍然显示构建成功!不好!

我如何使用 Gradle/Jenkins 设置一个自动化作业来验证所有依赖项是否已找到?

【问题讨论】:

    标签: maven jenkins dependencies gradle


    【解决方案1】:

    没有解决所有依赖关系的内置任务,如果找不到依赖关系则失败。 (在缺少依赖项的情况下,IDE 任务很优雅。)但是您可以轻松编写自己的:

    task resolveDependencies { 
        doLast { 
            configurations.all { it.resolve() } 
        }
    }
    

    【讨论】:

      【解决方案2】:

      gradle dependencies 按照设计显示 Gradle 项目依赖项报告(如果适用),如果给定的依赖项无法解决(未解决的依赖项旁边的红色文本 FAILED)。要获得错误,请使用一些依赖于解决给定配置的依赖项的任务,例如 gradle check

      更新。 Gradle 在确定是否需要执行给定的任务方面很聪明。因此,如果没有要编译的源文件(编译需要解析依赖的类/JAR)gradle check 可以注意到不需要执行compileJava/compileTestJava 任务(任务被跳过为最新的)。您可以通过将任何 Java 源文件添加到 src/main/test 来强制执行此操作(测试还需要生产依赖项(来自 compile 配置)。

      这只是一种解决方法,可能有更好的方法来做到这一点(我希望其他人会在这里展示它)。

      【讨论】:

        猜你喜欢
        • 2016-11-23
        • 2021-12-16
        • 2014-04-05
        • 2020-11-30
        • 1970-01-01
        • 2023-03-15
        • 2016-09-03
        • 1970-01-01
        • 2013-01-30
        相关资源
        最近更新 更多