【发布时间】:2021-08-16 09:30:23
【问题描述】:
Gradle 可以轻松地在运行时添加任务依赖项。
添加任务依赖后是否也可以删除它?
作为一个用例,假设我们想在单独的管道步骤中运行 checkstyle,而不是作为主构建的一部分。因此,我们应用了checkstyle 插件,但这增加了一些依赖于check 的任务。我想打破这种依赖关系,以便checkstyle 仅在显式运行时运行,而不是作为build 的一部分(取决于check,这取决于checkstyle*)。
要完成上述操作,我可以以build -x checkstyleMain -x checkstyleTest 运行主管道步骤。
另一种解决方法是将 checkstyle 任务的 enabled 属性设置为 false。
但是对于这个问题,我对删除任务依赖项的通用方法感兴趣,以便任务图缺少 2 个任务之间的边缘,就像从未添加该依赖项一样。 这个问题并不容易,因为:
- 在添加之前删除依赖项不会有任何影响
- 尝试删除对
gradle.taskGraph.whenReady的依赖可能会失败(因为不再允许更改任务图。
一个好的答案是这肯定是不可能的,在这种情况下,我可以向 Gradle 团队提出功能请求。
更新 1
我尝试将@Chriki 的 groovy 转换为 kotlin,如下所示:
project.afterEvaluate {
tasks.check {
dependsOn -= tasks.find {
it.name.startsWith("checkstyle")
}
}
}
但这不起作用。我收到一个错误:“不支持从任务实例中删除任务依赖项。”
【问题讨论】:
标签: gradle