我有一组可以按任何顺序运行的 gradle 任务,我将它们分为 3 组 A、B 和 C
有没有办法运行一组特定的任务?就像我只想运行 A 只有 B 并且可能是 A & B 的组合
我有一组可以按任何顺序运行的 gradle 任务,我将它们分为 3 组 A、B 和 C
有没有办法运行一组特定的任务?就像我只想运行 A 只有 B 并且可能是 A & B 的组合
我认为您几乎自己回答了,除非我遗漏了什么:)
您将它们分组为聚合任务,这使您可以做您想做的事情。这些任务不需要附加任何操作。
例如,如果您有一堆任务,如foo
,bar
和baz
,您可以像这样对它们进行分组:
// Individual tasks
task foo { doLast { logger.quiet("foo!")} }
task bar { doLast { logger.quiet("bar!")} }
task baz { doLast { logger.quiet("baz!")} }
// Aggregate tasks (groups)
task A(dependsOn: ["foo", "bar"])
task B(dependsOn: ["foo", "baz"])
task C(dependsOn: ["baz"])
运行A
执行foo
和bar
:
$ gradle A
> Task :bar
bar!
> Task :foo
foo!
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed
运行两者A
并B
全部执行:
$ gradle A B
> Task :bar
bar!
> Task :foo
foo!
> Task :baz
baz!
BUILD SUCCESSFUL in 1s
3 actionable tasks: 3 executed
更新:对不起,没有意识到你在谈论group
任务的实际属性。
我很确定您仍然需要为每个组自己创建一个任务,但是您可以使用以下方式简化依赖项定义:
A.dependsOn(tasks.matching { it.group = "A" })
如果您有很多组,您可以进一步自动创建分组任务,如下所示:
tasks.findAll{}.each { task ->
tasks.maybeCreate(task.group).dependsOn(task)
}