我使用Maven嵌入3.3.3在我的计划,以编程方式运行Maven目标,每次我碰到下面的错误,我运行MavenCli.doMain
方法:无法通过MavenCli(Maven的嵌入)来运行Maven任务
-Dmaven.multiModuleProjectDirectory
系统属性未设置。检查$M2_HOME
环境变量和mvn
脚本匹配。
我使用Maven嵌入3.3.3在我的计划,以编程方式运行Maven目标,每次我碰到下面的错误,我运行MavenCli.doMain
方法:无法通过MavenCli(Maven的嵌入)来运行Maven任务
-Dmaven.multiModuleProjectDirectory
系统属性未设置。检查$M2_HOME
环境变量和mvn
脚本匹配。
由于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
你正在构建的项目的根。
对于Maven Embedder 3.5.2,'doMain'选项不起作用,因为在对参数进行属性解析之前进行了检查。 – Mirvnillith
那么,你是否将'-Dmaven.multiModuleProjectDirectory'设置为项目基地? – Tunaki
我能够在我的系统上运行Maven命令。我从来没有得到这个错误 –