Предположим, build.gradle в конце этого поста.
Если я запускаю задачу WorkAилиWorkB, я получаю:
> Task :preTask
PreTask
> Task :WorkB (or A)
WorkB (or A)
> Task :finishTask
FinishTask
Однако если запустить задачу allWork, предварительная и финишная задача выполняется только один раз! Как это исправить?
> Task :preTask
PreTask
> Task :WorkA
WorkA
> Task :WorkB
WorkB
> Task :finishTask
FinishTask
> Task :AllWork
Combined
build.gradle
task preTask {
doFirst {
println "PreTask"
}
}
task finishTask {
doFirst {
println "FinishTask"
}
}
task WorkA {
dependsOn preTask
mustRunAfter preTask
finalizedBy finishTask
doFirst {
println "WorkA"
}
}
task WorkB {
dependsOn preTask
mustRunAfter preTask
finalizedBy finishTask
doFirst {
println "WorkB"
}
}
task AllWork {
dependsOn WorkA
dependsOn WorkB
WorkB.mustRunAfter WorkA
doFirst {
println "Combined"
}
}
см. также официальный документ: docs.gradle.org/current/userguide/build_lifecycle.html: «Gradle гарантирует, что эти задачи выполняются в порядке их зависимостей, и что каждая задача выполняется только один раз».
Возможный дубликат Выполнить задачу gradle несколько раз


Одна и та же задача не может быть выполнена несколько раз, см. Некоторые подробности здесь: обсуждение.gradle.org/t/…. Это не то, что вы можете «исправить», это поведение Gradle. Вы должны более подробно описать свой вариант использования, чтобы получить помощь при использовании других решений.