Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法通过MavenCli(maven embedder)运行maven任务_Java_Eclipse_Maven_Maven Embedder - Fatal编程技术网

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

Java 无法通过MavenCli(maven embedder)运行maven任务,java,eclipse,maven,maven-embedder,Java,Eclipse,Maven,Maven Embedder,我在程序中使用Maven embedder 3.3.3以编程方式运行Maven goals,每次运行MavenCli.doMain方法时都会出现以下错误: -Dmaven.multimultimoduleprojectdirectory未设置系统属性。检查$M2_HOME环境变量和mvn脚本匹配 因为,有一个新的系统属性名为maven.multiModuleProjectDirectory。默认情况下,脚本会将其设置为项目的根目录(projectbase目录)(这就是您以前从未遇到过此类错误的原

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

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

因为,有一个新的系统属性名为
maven.multiModuleProjectDirectory
。默认情况下,脚本会将其设置为项目的根目录(projectbase目录)(这就是您以前从未遇到过此类错误的原因)

因此,当通过
Maven embedder
运行Maven时,您还需要设置此系统属性(请参见进行检查的位置)。它需要设置为项目根目录

要设置此系统属性,您可以调整对
域的调用并添加

"-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
指向您正在构建的项目的根。

好的,您是否将
-Dmaven.multimultipuleprojectdirectory
设置为项目库?我能够在我的系统上运行Maven命令。我从来没有遇到过这个错误,
选项对Maven Embedder 3.5.2不起作用,因为检查是在解析属性参数之前进行的。