我正在开发一个项目,我想在其中使用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
答案 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().