我在我的程序中使用 Maven embedder 3.3.3 以编程方式运行 Maven 目标,每次运行该MavenCli.doMain
方法时都会出现以下错误:
-Dmaven.multiModuleProjectDirectory
系统属性未设置。检查$M2_HOME
环境变量和mvn
脚本匹配。
我在我的程序中使用 Maven embedder 3.3.3 以编程方式运行 Maven 目标,每次运行该MavenCli.doMain
方法时都会出现以下错误:
-Dmaven.multiModuleProjectDirectory
系统属性未设置。检查$M2_HOME
环境变量和mvn
脚本匹配。
从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
指向您正在构建的项目的根目录。