我在程序中使用 Maven embedder 3.3.3 以编程方式运行 Maven 目标,每次运行时都会出现以下错误MavenCli.doMain
method:
-Dmaven.multiModuleProjectDirectory
系统属性未设置。查看$M2_HOME
环境变量和mvn
脚本匹配。
Since Maven 3.3.1 https://stackoverflow.com/a/29780763/1743880,有一个新的系统属性称为maven.multiModuleProjectDirectory
。它默认设置为项目的根目录(项目基目录)mvn (or mvn.bat) https://github.com/apache/maven/blob/maven-3.3.9/apache-maven/src/bin/mvn#L243脚本(这就是为什么你以前从未遇到过这样的错误)。
因此,当通过运行 Maven 时maven-embedder
,您还需要设置此系统属性(请参阅源代码 https://github.com/apache/maven/blob/maven-3.3.9/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java#L330-L337进行检查的地方)。需要将其设置为项目根目录。
要设置此系统属性,您可以将调用调整为doMain
and add
"-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
指向您正在构建的项目的根目录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)