如何从 Java 逻辑内部使 Maven 构建失败?

How do I fail a Maven build from inside Java logic?

我正在开发一个项目,我想在其中使用 Maven 执行 Java Main class 作为构建过程的一部分。 Main class 的工作是验证某些给定的(当前硬编码的)文件是否是有效的 RAML 文件。在一个完美的世界中,我希望构建能够从这个 class 的逻辑中使构建失败,如果它们无效,并使用“[BUILD FAILURE]”将该失败报告回终端" 消息就像 maven 本身做的那样。

我将 org.codehaus.mojo.exec-maven-plugin 插件添加到我的 POM,这允许我执行我之前提到的 Java Main class。 POM 的该部分如下所示:

<plugin>  
   <groupId>org.codehaus.mojo</groupId>  
   <artifactId>exec-maven-plugin</artifactId>  
   <version>1.4.0</version>  
   <executions>  
    <execution>  
     <phase>test</phase>  
     <goals>  
      <goal>java</goal>  
     </goals>  
     <configuration>
      <mainClass>com.example.ubunfu.MainClass</mainClass>  
      <arguments>  
       <argument></argument>
      </arguments>
      <cleanupDaemonThreads>false</cleanupDaemonThreads> <!-- Prevents thread hanging -->
     </configuration>  
    </execution>  
   </executions>  
  </plugin>

但是,我不确定如何从 MainClass 内部的逻辑发出构建失败的信号——如果有必要的话。我在 Maven - Guide to Developing Java Plugins 中读到了 org.apache.maven.plugins.MojoFailureException。那里似乎说我可以抛出其中之一,它会像我希望的那样使构建失败。

我不确定我需要做什么才能在 MainClass 中使用 MojoFailureException class。我一直无法找到 JAR 或任何东西,但如果我了解 Maven 的工作原理,这应该通过添加某种 POM 而不是 JAR 来解决。

如果您对此有任何见解,我将不胜感激。

-瑞安

似乎抛出任何异常都会导致构建失败。参见 this answer

要访问 MojoFailureException,请添加以下依赖项:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>3.3.3</version>
</dependency>

提示:根据 Exec Maven Plugin, Usage <configuration> 位于 <executions>.

之外

"I would like the build to be able to fail the build from within this class's logic" → 只需 throw new RuntimeException().