当我运行 gradle build时,我想跳过一些任务。我知道这可以在命令行中用 -x完成:
gradle build
-x
gradle build -x unwantedTask
我的问题是如何在 build.gradle 中实现同样的结果?
你可以试试例如:
unwantedTask.enabled = false
因为我需要禁用一堆任务,所以我在 build.gradle文件中使用 apply plugin:之前的代码:
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 } } }