Могу ли я запустить определенную группу задач Gradle - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть набор дополнительных задач, которые могут выполняться в любом порядке, и я сгруппировал их в 3 набора A, B и C

. Есть ли способ запустить определенную группу задач?как я хочу запустить только A только B и может быть комбинацией A & B

1 Ответ

1 голос
/ 25 сентября 2019

Я думаю, что вы в значительной степени ответили на него сами, если только я что-то не упустил:)

Вы группируете их в совокупные задачи, и это позволяет вам делать то, что вы хотите.К этим задачам не нужно прикреплять какие-либо действия.

Например, если у вас есть куча задач, таких как 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)
}
...