gradle - 如何忽略dependsOn失败,因为某些子项目没有定义的任务

标签 gradle build.gradle multi-project

我有一个多项目gradle构建,其中并非所有子项目都具有相同的插件,但是我想在根build.gradle文件中定义任务,如下所示:

subprojects {
    task continuousBuild(dependsOn: ["clean", "check", "jacocoTestReport", "integrationTests"]
}

并非所有子项目都定义了“jacocoTestReport”或“integrationTests”,但是由于这个事实,此任务将失败。我如何配置它才能正常工作,坦率地说,为什么默认行为如此严格?

最佳答案

这就是对我有用的东西:

   task continuousBuild(dependsOn: ['clean', 'check']) {
        def uncommonTasks = ['jacocoTestReport', 'integrationTests']
        dependsOn += tasks
                .findAll { uncommonTasks.contains(name) }
   }

而且我忘记了我实际上需要在doLast中运行IntegrationTests,如下所示:
    task continuousBuild(dependsOn: ['clean', 'check']) {
        dependsOn += tasks
                .findAll { 'jacocoTestReport' == name) }

        if (tasks.findByName('integrationTests')) {
            doLast {
                integrationTests
            }
        }
    }

关于gradle - 如何忽略dependsOn失败,因为某些子项目没有定义的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48991375/

相关文章:

java - Spring集成入站 channel 适配器中的覆盖方法

android - Android Studio 无法识别默认配置

gradle - 在缺少MissingMethodException的build.gradle中找不到自定义方法

gradle - 如何在Gradle中包含C编译的 header ?

Spring Boot 多项目的 Gradle Build Fail

android - 在项目 gradle 中设置构建 :gradle:3. 0.1 或最新版本时出现 AAPT2 错误

flutter Firebase错误 "FAILURE: Build failed with an exception"

sbt 根据子项目中的测试给出 "configuration not public"

java - 从不同的项目调用不同的包

android - "Gradle files have changed since last project sync."消息总是出现