Для параллельного запуска задачи сборки должны быть размещены в подпроектах.
Они должны содержать doLast
;в противном случае они будут выполнены при вызове, например.gradle clean
.И, вероятно, будет достаточно определения с использованием простого значения task {..}
.
Параллельно: из документов по Gradle: параллельное выполнение
Используя ключ --parallel, вы можете заставить Gradle выполнять задачи параллельно, если эти задачи находятся в разных проектах.
См. Модифицированный пример ниже;он будет запускать две подзадачи (для сна и входа в систему) параллельно.
Может быть запущен с gradle clean deployStaging --parallel
Многопроектная структура
build-backend
+--build.gradle
build-static
+--build.gradle
build.gradle
settings.gradle
build-backend/build.gradle
:
apply plugin: 'base'
task buildDockerBackend {
doLast{
exec {
println 'BuildDockerBackend: started at ' + new java.util.Date()
workingDir rootDir
sleep 4000
//commandLine 'sh', './scripts/build_backend.sh'
commandLine 'echo', 'task: build-backend'
println 'BuildDockerBackend: done at ' + new java.util.Date()
}
}
}
build-static/build.gradle
apply plugin: 'base'
task buildDockerStatic {
doLast{
exec {
println 'BuildDockerStatic: started at ' + new java.util.Date()
workingDir rootDir
sleep 8000
//commandLine 'sh', './scripts/build_static.sh'
commandLine 'echo', 'task: build-static'
println 'BuildDockerStatic: done at ' + new java.util.Date()
}
}
}
build.gradle
apply plugin: 'base'
task deployStaging {
doLast {
exec {
workingDir rootDir
//commandLine 'sh', './scripts/build_deploy_staging.sh'
commandLine 'echo', 'task: deploy-staging'
}
}
}
deployStaging.dependsOn ':build-static:buildDockerStatic'
deployStaging.dependsOn ':build-backend:buildDockerBackend'
settings.gradle
include 'build-static'
include 'build-backend'