7

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

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

4

1 回答 1

9

Maven 3.3.1 开始,有一个新的系统属性称为maven.multiModuleProjectDirectory. 默认情况下,它由mvn(or mvn.bat)脚本设置为项目的根目录(项目基目录)(这就是您以前从未遇到过此类错误的原因)。

因此,通过 运行 Maven 时maven-embedder,还需要设置这个系统属性(查看进行检查的源代码)。它需要设置为项目根目录。

要设置此系统属性,您可以调整调用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方法之前, whereprojectRoot指向您正在构建的项目的根目录。

于 2015-10-28T20:20:27.473 回答