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

时间:2015-07-21 16:35:02

标签: java maven plugins build maven-3

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

我在我的POM中添加了org.codehaus.mojo.exec-maven-plugin插件,这允许我执行前面提到的Java Main类。 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类。我无法找到JAR或任何东西,但如果我理解Maven如何工作,这应该通过对POM的某种补充来修复,而不是JAR。

如果您对我有任何见解,我会非常感激。

-Ryan

2 个答案:

答案 0 :(得分:3)

看起来抛出任何异常都会导致构建失败。请参阅this answer

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

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

答案 1 :(得分:0)

提示:根据customerBill <configuration>以外的<executions>.

“我希望构建能够在此类逻辑中失败构建”→简单throw new RuntimeException().