从Java运行Maven Invoker失败

时间:2017-08-21 16:41:53

标签: java maven dependencies maven-invoker-plugin

我使用Maven Invoker在Java代码中运行一些maven命令。以下是我在编写自己的代码之前阅读的参考资料:

maven-invoker-illegal-state-exceptionhow-to-run-maven-from-javaMaven Invoker Usage

我的代码就像:

InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile(new File("absolute/path/of/pom.xml"));
request.setGoals(Arrays.asList("clean", "install"));

Invoker invoker = new DefaultInvoker();
invoker.setMavenHome(new File("absolute/path/of/maven/"));
invoker.setWorkingDirectory(new File("./")); //will fail with or without this line

InvocationResult result = invoker.execute(request);
System.out.println(result.getExitCode());

我得到的ExitCode总是1,这意味着构建失败。但是,我可以从命令行正确执行所有Maven命令。

此外,我还想通过引用this answer来使用pom.xml下载request.setGoals(Arrays.asList("dependency:copy-dependencies", "-DoutputDirectory=OUTPUT_DIR"));中声明的依赖项。 maven-dependency_plugin正确包含pom.xml

是不是因为我正在编写一个多模块项目而且所有这些都在一个模块下而不是从根目录下?如果是这样,这样做的正确方法是什么?非常感谢。

更新

最后,我提到了this page,并改为使用ProcessBuilder代替,这是有效的。

但我仍然没有理解为什么Invoker对我失败了。任何答案都将不胜感激。

0 个答案:

没有答案