Gradle: запускать предварительные и пост-задачи также, когда задачи связаны?

Предположим, 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"  
 }
}

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

M.Ricciuti 20.12.2018 19:08

см. также официальный документ: docs.gradle.org/current/userguide/build_lifecycle.html: «Gradle гарантирует, что эти задачи выполняются в порядке их зависимостей, и что каждая задача выполняется только один раз».

M.Ricciuti 20.12.2018 19:10

Возможный дубликат Выполнить задачу gradle несколько раз

M.Ricciuti 20.12.2018 19:13
Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
3
51
0

Другие вопросы по теме