Gradle exec tâche renvoie de sortie non nulle valeur et ne le construire, mais je veux pas échouer, et au lieu d'effectuer une autre tâche
J'ai un exec ensemble des tâches d'un joli défaut, quelque chose comme:
task myTask(type:Exec) {
workingDir '.'
commandLine './myscript.sh'
doLast {
if(execResult == 0) {
//one thing
} else {
//another thing
}
}
}
Mais malheureusement, il ne s'exécute jamais le doLast bloc quand une erreur est renvoyée par le script. Au lieu de cela, il saute et ne parvient pas à l'ensemble de la construire avec
Échec de l'exécution de la tâche:projet:myTask'.
Le processus de "commande". /myscript.sh" fini avec sortie non nulle valeur 1"
C'est inutile pour moi. L'idée de myscript.sh finition avec une sortie non nulle valeur est donc, je peux alors exécuter du code en réponse à elle. Que dois-je faire pour ne pas échouer à le construire, mais la capture du résultat et de réaliser une action en réponse? Merci pour l'aide!
- gradle dsl est un simple script groovy, il vous suffit d'écrire un bloc try catch dans votre tâche
Vous devez vous connecter pour publier un commentaire.
TL;DR - Utilisation ignoreExitValue = true
Quand j'ai lu la documentation sur la cinquantième fois, j'ai enfin vu qu'il y a des biens, ignoreExitValue, qui est par défaut à false. Mais si vous attribuez la valeur true, vous pouvez ensuite effectuer vos propres tâches dans le doLast bloc.
exec{ def command = "command -v docker" ignoreExitValue = true executable "bash" args "-l", "-c", command if(execResult == 0){ println "Has Docker" }else{ println "No Docker" } }
task someTaskName(type: Exec) { // stuff you want to do here }
docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.htmlignoreExitValue true
ne fonctionne pas pour moi. Être "Un problème est survenu de départ du processus de commande"Si le
ignoreExitValue
réponse ne fonctionne pas, une autre solution consiste à entourercommandLine
avec untry { ... } catch (Exception e() { ... }
.