AbstractMavenMojo的execute方法声明它引发两个异常,即MojoExecutionException和MojoFailureException。抛出任何一个都会导致构建停止,并且在每种情况下日志都会显示几乎相同的消息。

MojoExecutionException的消息是:

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

并且MojoFailureException的消息是:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] [exception text]
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------

什么时候应该抛出哪个异常,为什么?

最佳答案

如果问题导致无法继续进行构建,则似乎应该抛出MojoExecutionException,否则应使用MojoFailureException

您可以控制运行maven时处理MojoFailureExpections的行为。

以下链接详细说明了区别:https://books.sonatype.com/mvnref-book/reference/writing-plugins-sect-custom-plugin.html#writing-plugins-sect-failure
链接断开?谷歌搜索
sonatype writing-plugins-sect-custom-plugin writing-plugins-sect-failure

10-08 01:13