如何禁用build.gradle中的任务

ss2ws0br  于 2023-06-23  发布在  其他
关注(0)|答案(6)|浏览(174)

我想在运行gradle build时跳过一些任务。我知道可以通过-x从命令行完成:

gradle build -x unwantedTask

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

eeq64g8w

eeq64g8w1#

您可以尝试例如:

unwantedTask.enabled = false
wecizke3

wecizke32#

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

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

bq9c1y663#

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

unwantedTask.onlyIf { <expression> }

例如:

compileJava.onlyIf { false }

高级IDE,比如IDEA,通过代码完成,将为您提供许多可以在build.gradle中的任何给定对象上执行的操作--毕竟,它只是一个Groovy脚本。

j2qf4p5b

j2qf4p5b4#

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

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

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

iyfamqjs

iyfamqjs5#

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

tasks.clean {
    isEnabled = false
}
tasks.getByName("MyTaskName") {
    onlyIf { System.getenv()["CI"] == "true" }
}
8mmmxcuj

8mmmxcuj6#

project.gradle.taskGraph.whenReady { graph ->
  project.tasks.findAll().forEach { task ->
    if (task.name.contains("<your-text>")) {
      task.enabled = false
    }
  }
}

相关问题