Ответ 1
Задачи независимых проектов могут выполняться параллельно, используя флаг --parallel
.
Чтобы выполнить параллельную сборку по нескольким проектам, пользователь должен заявить, что они хотели бы, чтобы их проекты выполнялись параллельно, с помощью командной строки:
--parallel
\\ Tells Gradle to execute decoupled projects in parallel. Gradle will attempt to determine the optimal number of executors to use.
--max-workers=4
\\ Tells Gradle to execute decoupled projects in parallel, using the specified number of workers. The default is the number of processors.
Подобно демону Gradle, должно быть возможно включить/настроить параллельное выполнение для каждого пользователя и для каждого проекта. Это можно сделать с помощью свойства среды сборки, установленного в gradle.properties
:
org.gradle.parallel: When set to `true`, Gradle will execute with the parallel executer
org.gradle.workers.max: Specify the maximum number of workers to use for parallel execution. This property does not in itself enable parallel execution,
but the value will be used whether Gradle is executed with `--parallel` or `org.gradle.parallel=true`.
Ссылки на ресурсы:
- https://docs.gradle.org/current/userguide/gradle_command_line.html
- https://docs.gradle.org/current/userguide/build_environment.html
Здесь приведен полный пример параллельного запуска: https://github.com/camiloribeiro/cucumber-gradle-parallel/blob/master/build.gradle#L50
Как работает параллельное выполнение?
Сначала вам нужно указать Gradle использовать параллельный режим. Вы можете использовать аргумент командной строки (Приложение D, Gradle Командная строка) или настроить среду сборки (раздел 12.1, "Настройка среды сборки через gradle.properties" ). Если вы не предоставляете определенное количество параллельных потоков, Gradle пытается выбрать правильный номер на основе доступных ядер процессора. Каждый параллельный работник исключительно владеет данным проектом во время выполнения задачи. Это означает, что 2 задания из одного проекта никогда не выполняются параллельно. Поэтому только многопроектные сборки могут использовать параллельное выполнение. Зависимости задач полностью поддерживаются, и параллельно работники сначала начнут выполнять восходящие задачи. Имейте в виду, что алфавитное планирование развязанных задач, известных из последовательного выполнения, на самом деле не работает в параллельном режиме. Вы должны убедиться, что зависимостей задачи объявлены правильно, чтобы избежать проблем с упорядочением.
Ссылка ресурса: https://docs.gradle.org/current/userguide/multi_project_builds.html
Начиная с версии 3.5, Gradle может печатать статус параллельных рабочих:
<===========--> 90% EXECUTING
> :backend-service:bootRun
> :frontend-service:bootRun