Gradle - добавить дополнительную задачу к существующей задаче
Я работаю над проектом, который использует EJB2s. Созданные EJB Jar требуют дополнительной обработки сервером приложений, прежде чем они будут объединены в war/ear и развернуты.
Я создал пользовательскую задачу, которая работает для дополнительной обработки, если я вызываю ее явно (gradle ejbDeploy), но у меня возникают проблемы при ее установке в многопроектный жизненный цикл gradle. Мне нужно как-то добавить его в график сборки для автоматического выполнения после задачи jar.
Моей первой попыткой было добавить его в банку с
jar.doLast{
ejbDeploy.execute()
}
который, кажется, работает для произвольных блоков кода, но не для задач
Какое рекомендуемое решение для этого? Я вижу три подхода:
- Подключитесь к графу сборки и добавьте его явно после задачи jar.
- Настройте это как-нибудь в jar.doLast{}
- Установите его как предварительное условие для выполнения задачи WAR
Есть ли рекомендуемый подход?
Спасибо!
3 ответа
Я новичок в Gradle, но я бы сказал, что ответ на самом деле зависит от того, что вы пытаетесь достичь.
Если вы хотите выполнить задачу, когда кто-то запускает команду gradle jar
тогда подхода № 3 будет недостаточно.
Вот что я сделал для чего-то похожего
classes {
doLast {
buildValdrConstraints.execute()
}
}
task buildValdrConstraints(type: JavaExec) {
main = 'com.github.valdr.cli.ValdrBeanValidation'
classpath = sourceSets.main.runtimeClasspath
args '-cf',valdrResourcePath + '/valdr-bean-validation.json'
}
Я бы пошел на подход № 3 и установить его как зависимость от задачи войны, например:
war {
it.dependsOn ejbDeploy
...
}
Добавьте следующее, а затем ejbDeploy
будет выполнен сразу после jar
, но прежде war
jar.finalizedBy ejbDeploy
Смотрите Gradle Docs. 18,11. Финализатор задач