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?
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
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
.