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