Méthode recommandée pour arrêter un build Gradle
Comment puis-je arrêter un build Gradle après la détection du problème? Je peux utiliser une assertion, lancer une exception, faire un Système.sortie (mauvaise idée), ou l'utilisation d'une fonction dédiée dans Gradle (mais je ne pouvais pas en trouver un). Quel est le meilleur moyen pour Gradle (et pourquoi?).
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude de jeter l'exception de la
org.gradle.api
le paquet, par exempleInvalidUserDataException
pour quand quelqu'un est entré dans quelque chose de pas valide, ouGradleScriptException
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
require(something != whatever) { "No good!" }
par opposition à la plus prolixe et le type-eeif(something != whatever){ throw new GradleException("No good!") }
GradleScriptException
est qu'il a besoin d'un second paramètre pour une cause.make
est querules
(task-s) a réussi ou échoué. J'ai essayé une foisreturn false
-- Gradle simplement ignoré et a continué à courir.Si vous voulez arrêter de les construire, de les jeter:
ou de jeter les sous-classes de l'exception ci-dessus. Certains de la sous-classe des exceptions en fait, seul l'échec de la tâche en cours, mais continuer à la construire.
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 exception types
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.
Vous donne un message du genre:
Probablement vous peut 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é.
throw new GradleException("The sky is falling!!")
(Gradle 3.4.1)Jetant un simple GradleException travaille dans l'arrêt du script de construction. Cela fonctionne très bien pour
la vérification requise la configuration de l'environnement.
Exemple:
Voici un fragment de code qui tente d'imiter la façon dont le Gradle javac tâche lève erreurs:
Lors de la commande retourne
0
il n'y a pas de sortie. Toute autre valeur d'imprimer la standardOutput et de stopper la construction.REMARQUE: Si votre commande écrit à errorOutput ainsi, vous devrez peut-être l'inclure dans le journal des erreurs.