45 votes

Quand utiliser MojoExecutionException et MojoFailureException dans Maven ?

La méthode d'exécution d'AbstractMavenMojo déclare qu'elle lève deux exceptions, MojoExecutionException et MojoFailureException. Le lancement de l'une ou l'autre de ces exceptions entraîne l'arrêt de la construction et l'affichage d'un message de type presque message identique dans chaque cas.

Le message pour MojoExecutionException est :

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] [exception text]
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------

et le message pour MojoFailureException est :

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] [exception text]
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------

Quand faut-il lancer une exception et pourquoi ?

35voto

Kingamajick Points 1447

Il semble que vous devriez jeter un MojoExecutionException si le problème rend impossible la poursuite de la construction, et l'utilisation de l' MojoFailureException sinon.

Vous pouvez contrôler le comportement de la remise MojoFailureExpections lorsque maven est exécuté.

Le lien suivant détaille la différence: http://www.sonatype.com/books/mvnref-book/reference/writing-plugins-sect-custom-plugin.html#writing-plugins-sect-failure

1 votes

Le lien est cassé. Essayez sonatype.com/books/mvnref-livre/référence/ à la place.

1 votes

Si je comprends votre réponse (et la section "Writing a Custom Plugin" du livre), si l'utilisateur fournit une configuration invalide pour mon plugin maven, je devrais lancer MojoExecutionException ?

5voto

scravy Points 3070

Lancez un MavenFailureException si votre étape de construction a échoué mais qu'elle peut être ignorée (par exemple, vous pouvez vouloir ignorer les tests qui échouent).

Lancez un MavenExecutionException s'il n'y a aucun moyen de continuer - disons que vous avez détecté une condition irrécupérable comme vous essayiez de compiler et le projet n'a pas pu être compilé donc tout ce qui suit serait de toute façon inutile.

MavenExecutionException tuera toujours la construction alors que le comportement de la commande MavenFailureException est configurable.

Le comportement par défaut est d'échouer rapidement, c'est-à-dire le même comportement que l'erreur de construction, ce qui est le plus souvent ce que vous voulez. Vous pouvez modifier le comportement en passant un drapeau de ligne de commande :

mvn -fae échouer à la fin, c'est-à-dire que chaque étape de la construction sera exécutée et que vous pouvez connaître des échecs ultérieurs si une étape échoue, la construction entière n'échoue qu'une fois que chaque étape a été exécutée.

mvn -fn n'échouez pas. C'est utile si vous voulez ignorer, par exemple, un test d'intégration qui échoue mais qui, néanmoins, n'échoue pas. mvn deploy .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X