如何禁用 build.gradle 中的任务

当我运行 gradle build时,我想跳过一些任务。我知道这可以在命令行中用 -x完成:

gradle build -x unwantedTask

我的问题是如何在 build.gradle 中实现同样的结果?

61537 次浏览

你可以试试例如:

unwantedTask.enabled = false

因为我需要禁用一堆任务,所以我在 build.gradle文件中使用 apply plugin:之前的代码:

tasks.whenTaskAdded {task ->
if(task.name.contains("unwantedTask")) {
task.enabled = false
}
}

正如@LukasK örfer 在评论中暗示的那样,要真正从构建中删除一个任务,而不是直接跳过它,一个解决方案是将其添加到构建脚本中:

project.gradle.startParameter.excludedTaskNames.add('yourTaskName')

但是,这似乎删除了所有子项目的任务。

对于一个更通用的方法,您可以:

unwantedTask.onlyIf { <expression> }

例如:

compileJava.onlyIf { false }

像 IDEA 这样的高级 IDE,通过代码完成,可以让您在 build.gradle中的任何给定对象上做很多事情——毕竟,它只是一个 Groovy 脚本。

Kotlin DSL(build.gradle.kts)示例:

tasks.clean {
isEnabled = false
}


tasks.getByName("MyTaskName") {
onlyIf { System.getenv()["CI"] == "true" }
}
project.gradle.taskGraph.whenReady { graph ->
project.tasks.findAll().forEach { task ->
if (task.name.contains("<your-text>")) {
task.enabled = false
}
}
}