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

tr_*_*est 6 java eclipse maven maven-embedder

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

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

Tun*_*aki 7

Maven 3.3.1开始,有一个新的系统属性叫做maven.multiModuleProjectDirectory.默认情况下,它由mvn(或mvn.bat)脚本设置为项目的根目录(项目基础目录)(这就是为什么您之前从未遇到过这样的错误).

因此,在运行Maven时maven-embedder,还需要设置此系统属性(请参阅进行检查的源代码).它需要设置为项目根目录.

要设置此系统属性,您可以调整您的呼叫doMain并添加

"-Dmaven.multiModuleProjectDirectory=" + projectRoot
Run Code Online (Sandbox Code Playgroud)

对于给定的论点.一个例子是

int result = cli.doMain(new String[] { "-Dmaven.multiModuleProjectDirectory=" + projectRoot, "install" }, "/path/to/project", System.out, System.err);
Run Code Online (Sandbox Code Playgroud)

或者,您可以致电:

System.setProperty("maven.multiModuleProjectDirectory", projectRoot);
Run Code Online (Sandbox Code Playgroud)

在调用MavenCli.doMain方法之前,projectRoot指向要构建的项目的根目录.

  • `doMain` 选项不适用于 Maven Embedder 3.5.2,因为在解析参数的属性之前进行检查。 (5认同)