我可以 运行 一组特定的 gradle 任务吗
Can I run a specific group of gradle tasks
我有一组 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)
}
我有一组 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)
}