我可以 运行 一组特定的 gradle 任务吗

Can I run a specific group of gradle tasks

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

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

的组合

我想你自己回答得差不多了,除非我遗漏了什么:)

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

例如,如果您有一堆任务,例如 foobarbaz,您可以将它们分组如下:

// 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)
}