Задачи Gradle GradleBuild не выполняются параллельно

У меня есть эти задачи в многопроектной сборке:

task runA(type: GradleBuild) {
    tasks = [
         ':a:x:bootRun',
         ':a:y:bootRun',
         ':c:x:bootRun'
    ]
}

task runB(type: GradleBuild) {
    tasks = [
         ':b:x:bootRun',
         ':b:y:bootRun',
         ':c:x:bootRun'
    ]
}

Каждый :a:x и т. д. — это отдельный проект (файл build.gradle/build.gradle.kts). Когда я вызываю gradle runA или gradle runB, все подзадачи выполняются параллельно, как и должны.

Однако, когда я запускаю gradle runA runB, вызываются только некоторые задачи, в то время как я хочу, чтобы все пять уникальных задач a:x a:y c:x b:x b:y выполнялись параллельно. Я также пытался использовать dependsOn вместо типа задачи GradleBuild, но это приводит к тому же результату (обычно только 4 из 5 ожидаемых задач выполняются параллельно).

Обратите внимание, что задачи никогда не «завершаются», поскольку они запускают приложение, здесь я более или менее злоупотребляю gradle как своего рода средством запуска. Я предполагаю блоки градиента и жду завершения одной из задач, но между ними нет никаких зависимостей.

Что мне нужно сделать, чтобы заставить Gradle запускать все задачи параллельно одновременно?


person Johannes Rudolph    schedule 21.05.2019    source источник
comment
Я не испытываю того, что вы сказали. При выполнении gradle runA все задачи не выполняются параллельно. На самом деле мне нужно сделать gradle --parallel runA, чтобы это сработало.   -  person smac89    schedule 19.12.2019


Ответы (1)


Gradle будет использовать эвристику, чтобы решить, сколько вещей нужно запускать параллельно. Таким образом, наиболее вероятное объяснение состоит в том, что по умолчанию он ограничивается 4 параллельными задачами.

Вы можете управлять этим через gradle.properties:

org.gradle.workers.max=(max # of worker processes)
person Louis Jacomet    schedule 23.05.2019
comment
Спасибо, я проверил это (12 на моей машине по умолчанию, установка явно не помогла). Самое смешное, что задача runX со всеми перечисленными сразу 5 задачами работает как надо... - person Johannes Rudolph; 25.05.2019