0

我有一组可以按任何顺序运行的 gradle 任务,我将它们分为 3 组 A、B 和 C

有没有办法运行一组特定的任务?就像我只想运行 A 只有 B 并且可能是 A & B 的组合

4

1 回答 1

2

我认为您几乎自己回答了,除非我遗漏了什么:)

您将它们分组为聚合任务,这使您可以做您想做的事情。这些任务不需要附加任何操作。

例如,如果您有一堆任务,如foo,barbaz,您可以像这样对它们进行分组:

// 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执行foobar

$ gradle A

> Task :bar
bar!

> Task :foo
foo!

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed

运行两者AB全部执行:

$ 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)
}
于 2019-09-25T13:10:06.597 回答