Comment puis-je arrêter une version suite à un problème avec ma version dans Gradle? Je peux utiliser une assert, lancer une exception, faire un System.exit (mauvaise idée) ou utiliser une fonction dédiée dans gradle (mais je n'ai pas pu en trouver une). Quel est le meilleur moyen pour Gradle (et pourquoi?).
Réponses
Trop de publicités?J'ai l'habitude de jeter l'exception de l' org.gradle.api
package, par exemple InvalidUserDataException
lorsque quelqu'un est entré dans quelque chose de pas valide, ou GradleScriptException
pour plus d'erreurs générales.
Si vous souhaitez arrêter la tâche en cours ou de l'action, et de passer à la suivante, vous pouvez également jeter un StopActionException
Il n'existe actuellement aucune méthode spécifique, bien qu'il y ait eu des discussions pour en ajouter une.
La méthode recommandée pour arrêter un build Gradle est de lancer une exception. Depuis Groovy n'a pas vérifié les exceptions, et Gradle par défaut n'imprime pas le type d'exception, ce n'est pas que critique dont exception est levée. Dans les scripts de compilation, GradleException est souvent utilisé, mais Groovy affirmation semble également raisonnable (en fonction des circonstances et de l'auditoire). Ce qui est important est de fournir un message clair. L'ajout d'une cause (si disponible) aide pour le débogage (--stacktrace
).
Gradle offre dédiée de types d'exceptions StopExecutionException
/StopActionException
pour l'arrêt de la tâche en cours/action de tâche, mais la poursuite de l'accumulation.
Une autre option, si vous n'avez pas du tout envie d'être capable d'attraper l'exception plus tard, est d'appeler la fourmi échec de la tâche. C'est un peu plus facile à lire, à mon avis, et vous pouvez donner un joli message à l'utilisateur, sans l'utilisation de --stacktrace.
task (tarball, dependsOn: warAdmin) << {
ant.fail('The sky is falling!!')
}
Vous donne un message du genre:
* What went wrong:
Execution failed for task ':tarball'.
> The sky is falling!!
Probablement vous pouvez attraper cette (peut-être qu'il jette de la fourmi BuildException?) mais si c'est un but alors je ne voudrais pas utiliser ant.un échec. Je venais de faire, il est facile de voir ce que l'exception de l'attraper en jetant standard gradle exception comme tim_yates suggéré.
Lancer une simple GradleException fonctionne en arrêtant le script de construction. Cela fonctionne très bien pour vérifier la configuration requise de l'environnement.
GradleException('your message, why the script is stopped.')
Exemple:
if(null == System.getenv()['GRADLE_USER_HOME']) {
throw new GradleException('Required GRADLE_USER_HOME environment variable not set.')
}