java - 使用 maven 调用程序时如何获取构建状态?
问题描述
我正在开发一个插件来验证 maven 项目是否编译,我正在使用 maven 调用程序install
在每个项目上运行目标,但我没有找到如何从中获取构建结果,这是我的代码示例'正在尝试使用:
private void verify(File file) {
Invoker invoker = new DefaultInvoker();
InvocationRequest request = new DefaultInvocationRequest();
request.setGoals(Collections.singletonList("install"))
.setMavenOpts("-Dmaven.test.skip=true")
.setBaseDirectory(file).
setBatchMode(true);
try {
invoker.execute(request);
} catch (Exception e) {
failedToCompileList.add(file.getAbsolutePath());
getLog().error(e);
}
}
解决方案
在Usage page中,您只需要检查execute
语句的结果:
InvocationResult result = invoker.execute( request );
if ( result.getExitCode() != 0 )
{
throw new IllegalStateException( "Build failed." );
}
这将从调用结果中检索退出代码,如果它不为 0(传统的全清除代码)则抛出异常。请注意,我们可以通过将 InvocationOutputHandler 实例添加到调用程序或请求来捕获构建输出。
将此添加到您的示例中将是:
private void verify(File file) {
Invoker invoker = new DefaultInvoker();
InvocationRequest request = new DefaultInvocationRequest();
request.setGoals(Collections.singletonList("install"))
.setMavenOpts("-Dmaven.test.skip=true")
.setBaseDirectory(file).
setBatchMode(true);
try {
InvocationResult result = invoker.execute(request);
if ( result.getExitCode() != 0 )
{
throw new IllegalStateException( "Build failed." );
}
} catch (Exception e) {
failedToCompileList.add(file.getAbsolutePath());
getLog().error(e);
}
}
推荐阅读
- ios - mkdir(/Debug-iphoneos, S_IRWXU | S_IRWXG | S_IRWXO):Xcode 13.2 beta 上的只读文件系统 (30) 错误
- java - 超过 1 个哈希值指向相同的模式
- reactjs - React Final Form 如何在模态按钮中传递表单值?
- javascript - 如何在 Selenium 中将 WebGL 画布保存为 PNG?
- javascript - MongoDB:仅对小于或等于某个值的项目进行排序
- security - 在未经授权的用户的情况下登录的最佳实践
- javascript - 如何用matter.js画一个半圆?
- regex - Powershell - 尝试从 Powershell v 2.0 及更高版本中的 Env Var 路径中提取应用程序安装路径
- c# - Crystal Reports - 在详细信息部分显示多变量参数
- javascript - Function App/GetSPANList 在服务器上返回 401 错误。C# asp.net