我想在运行gradle build时跳过一些任务。我知道可以通过-x从命令行完成:
gradle build
-x
gradle build -x unwantedTask
我的问题是如何在build.gradle中实现相同的结果?
eeq64g8w1#
您可以尝试例如:
unwantedTask.enabled = false
wecizke32#
因为我需要禁用一堆任务,所以我在build.gradle文件中使用了apply plugin:之前的代码:
build.gradle
apply plugin:
tasks.whenTaskAdded {task -> if(task.name.contains("unwantedTask")) { task.enabled = false } }
bq9c1y663#
对于更通用的方法,您可以:
unwantedTask.onlyIf { <expression> }
例如:
compileJava.onlyIf { false }
高级IDE,比如IDEA,通过代码完成,将为您提供许多可以在build.gradle中的任何给定对象上执行的操作--毕竟,它只是一个Groovy脚本。
j2qf4p5b4#
正如@LukasKörfer在评论中暗示的那样,要真正从构建中删除任务,而不是跳过它,一个解决方案是将其添加到构建脚本中:
project.gradle.startParameter.excludedTaskNames.add('yourTaskName')
然而,这似乎删除了所有子项目的任务。
iyfamqjs5#
Kotlin DSL(build.gradle.kts)示例:
tasks.clean { isEnabled = false }
tasks.getByName("MyTaskName") { onlyIf { System.getenv()["CI"] == "true" } }
8mmmxcuj6#
project.gradle.taskGraph.whenReady { graph -> project.tasks.findAll().forEach { task -> if (task.name.contains("<your-text>")) { task.enabled = false } } }
6条答案
按热度按时间eeq64g8w1#
您可以尝试例如:
wecizke32#
因为我需要禁用一堆任务,所以我在
build.gradle
文件中使用了apply plugin:
之前的代码:bq9c1y663#
对于更通用的方法,您可以:
例如:
高级IDE,比如IDEA,通过代码完成,将为您提供许多可以在
build.gradle
中的任何给定对象上执行的操作--毕竟,它只是一个Groovy脚本。j2qf4p5b4#
正如@LukasKörfer在评论中暗示的那样,要真正从构建中删除任务,而不是跳过它,一个解决方案是将其添加到构建脚本中:
然而,这似乎删除了所有子项目的任务。
iyfamqjs5#
Kotlin DSL(build.gradle.kts)示例:
8mmmxcuj6#