无法通过MavenCli(maven-embedder)运行maven任务

时间:2015-10-28 20:03:12

标签: java eclipse maven maven-embedder

我在我的程序中使用Maven embedder 3.3.3以编程方式运行maven目标,每次运行MavenCli.doMain方法时都会出现以下错误:

  未设置

-Dmaven.multiModuleProjectDirectory系统属性。检查$M2_HOME环境变量和mvn脚本匹配。

1 个答案:

答案 0 :(得分:7)

Maven 3.3.1以来,有一个名为maven.multiModuleProjectDirectory的新系统属性。它由mvn (or mvn.bat)脚本默认设置为项目的根目录(项目基础目录)(这就是为什么你以前从未遇到过这样的错误)。

因此,在通过maven-embedder运行Maven时,您还需要设置此系统属性(请参阅source code进行检查)。它需要设置为项目根目录。

要设置此系统属性,您可以将调用调整为doMain并添加

"-Dmaven.multiModuleProjectDirectory=" + projectRoot

给定的参数。一个例子是

int result = cli.doMain(new String[] { "-Dmaven.multiModuleProjectDirectory=" + projectRoot, "install" }, "/path/to/project", System.out, System.err);

或者,您可以致电:

System.setProperty("maven.multiModuleProjectDirectory", projectRoot);

在调用MavenCli.doMain方法之前,其中projectRoot指向您正在构建的项目的根目录。