运行其他任务时跳过任务

时间:2016-11-17 08:13:35

标签: gradle skip

我在gradle项目中添加了一项任务:

task deploy() {
    dependsOn "build"
    // excludeTask "test"  <-- something like this

    doFirst {
       // ...
    }
}

现在build任务始终在deploy任务之前运行。这很好,因为构建任务包含许多步骤。现在我想明确禁用其中一个包含的任务。

通常我会使用

从命令行禁用它
gradle deploy -x test

如何以编程方式排除test任务?

2 个答案:

答案 0 :(得分:14)

您需要配置任务图,而不是配置deploy任务本身。这是您需要的代码:

gradle.taskGraph.whenReady { graph ->
    if (graph.hasTask(deploy)) {
        test.enabled = false
    }
}

答案 1 :(得分:2)

我不知道您的部署任务的作用,但它可能不应该依赖于“构建”。任务。 &#39;构建&#39;任务是一个非常粗糙的生命周期任务,包括你可能不想要的大量东西。

相反,它应该正确定义其输入(可能是您要部署的工件),然后Gradle将只运行必要的任务来构建这些输入。然后你不再需要任何排除。