【问题标题】:Unable to run maven tasks through MavenCli (maven-embedder)无法通过 MavenCli (maven-embedder) 运行 maven 任务
【发布时间】:2016-01-28 18:55:35
【问题描述】:

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

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

【问题讨论】:

  • 嗯,您是否将-Dmaven.multiModuleProjectDirectory 设置为项目库?
  • 我能够在我的系统上运行 Maven 命令。我从来没有遇到过这个错误

标签: java eclipse maven maven-embedder


【解决方案1】:

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

【讨论】:

  • doMain 选项不适用于 Maven Embedder 3.5.2,因为在为属性解析参数之前会进行检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2011-03-31
  • 2021-11-28
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
相关资源
最近更新 更多