Quand utiliser MojoExecutionException vs Mojofailreexception dans Maven

la méthode execute d'AbstractMavenMojo déclare qu'elle lance deux exceptions, MojoExecutionException et MojoFailureException. Lancer l'un ou l'autre entraîne l'arrêt de la construction et le log affiche un 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 devez-vous lancer quelle exception et pourquoi?

36
demandé sur Rich Seller 2009-06-23 19:07:19

2 réponses

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

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

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

Lien cassé? Recherche Google sonatype l'écriture-plugins-secte-custom-rédaction de plugin-plugins-secte-échec

29
répondu Kingamajick 2016-05-13 07:51:11

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

Lancer MavenExecutionException s'il n'y a pas moyen de continuer - disons que vous avez détecté une condition non récupérable comme vous essayiez de compiler et le projet ne pouvait pas être compilé ainsi tout après cela serait de toute façon sans résultat.

MavenExecutionException tuera toujours le build alors que le comportement du MavenFailureException est configurable.

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

mvn -fae fail à la fin, c'est à dire à chaque étape de génération sera exécuté et vous pouvez éprouver échecs ultérieurs si une étape échoue, l'ensemble de la construction est seulement échoué une fois que chaque étape a été exécuté.

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

0
répondu scravy 2018-04-04 16:51:39