Maven 和 IntelliJ 的“-Dmaven.multiModuleProjectDirectory not set”问题

Posted

技术标签:

【中文标题】Maven 和 IntelliJ 的“-Dmaven.multiModuleProjectDirectory not set”问题【英文标题】:`-Dmaven.multiModuleProjectDirectory not set` issue with Maven and IntelliJ 【发布时间】:2015-07-11 02:19:51 【问题描述】:

我花了很长时间试图找出我做错了什么,并希望有人能提供帮助。

我当前的设置正在运行 Maven 3.3.3(通过自制软件)和 Java 1.8。 IntelliJ 13 是首选 IDE。

运行 mvn -version 会产生以下结果:

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-
22T12:57:37+01:00)
Maven home: /usr/local/Cellar/maven/3.3.3/libexec
Java version: 1.8.0_45, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.2", arch: "x86_64", family: "mac"

我相信这意味着一切正常,但是当我进入我的 IDE 并尝试运行一个 Maven 项目时,我收到了这个错误:

/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java -Dmaven.home=/usr/local/Cellar/maven/3.3.3/libexec -Dclassworlds.conf=/usr/local/Cellar/maven/3.3.3/libexec/bin/m2.conf -Didea.launcher.port=7539 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 13.app/bin" -Dfile.encoding=UTF-8 -classpath "/usr/local/Cellar/maven/3.3.3/libexec/boot/plexus-classworlds-2.5.2.jar:/Applications/IntelliJ IDEA 13.app/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher -Didea.version=13.1.3
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
Process finished with exit code 1

我的 M2_HOME 变量设置为 /usr/local/Cellar/maven/3.3.3/libexec,与 homebrew 安装它的目录相同,这也与 IDE 设置匹配。

一次搜索让我相信这可能与 Maven 版本和 IDE 有关,但我不相信。有人能解释一下吗?

【问题讨论】:

我已将您的答案添加为下面的社区 wiki。以后,如果您已经回答了您的问题,请鼓励您回答您的问题。 显然被跟踪为IDEA-137783?但这似乎是 Maven 中的一种回归,无论何时运行都可见,例如 M2_HOME=/…/apache-maven-3.3.3 /…/apache-maven-3.1.0/bin/mvn … 【参考方案1】:

以防万一您再次遇到该错误,请转到 Settings -> Maven -> Runner 并添加

-Dmaven.multiModuleProjectDirectory=$M2_HOME

到虚拟机选项。

【讨论】:

嗨,我仍然在 intellij13 上进行安装,但出现错误,所以我回家后会试试这个。谢谢。 这很好用,谢谢。我仍然会使用 IDEA 14,因为它既新又闪亮,但我很高兴有一个明智的解决方案。 :) 我购买了 IDEA 12 的许可证,该解决方案也适用于我。谢谢。 这可能行得通,但它不是,它应该是什么。 maven.multiModuleProjectDirectory 属性应该指向多模块项目的根目录,而M2_HOME 是安装 Maven 的位置。这些不是一回事。如果它只需要设置为任何东西,那就没问题了。如果它用于在多项目构建中定位一些配置文件,那么你不是。幸运的是,mvn 设置了它,IDEA 14+ 也这样做了。一般来说,Maven 对项目的“根模块”的定义非常松散(或糟糕)。【参考方案2】:

我在尝试使用 Maven 构建 CAS 覆盖模板时遇到了这个问题。我可以通过添加以下环境变量来解决它:

MAVEN_OPTS = -Dmaven.multiModuleProjectDirectory

【讨论】:

export MAVEN_OPTS=-Dmaven.multiModuleProjectDirectory 这对我有用【参考方案3】:

从最初的问题来看,OP已经通过这种方法解决了他们的问题。

我升级到了 IDEA 14,导入了设置,创建了一个新的 Spring 项目,它开箱即用。

【讨论】:

虽然这是我的解决方案,但上面的一个是 IDEA 13.1 的公认答案 - 以防其他人偶然发现这篇文章但无法升级。

以上是关于Maven 和 IntelliJ 的“-Dmaven.multiModuleProjectDirectory not set”问题的主要内容,如果未能解决你的问题,请参考以下文章

Maven 和 IntelliJ 的“-Dmaven.multiModuleProjectDirectory not set”问题

在 IntelliJ 中,如何调试 Maven 测试目标?

intellij Project make 和 Maven Compile 之间的区别?

如何在 Maven 和 Intellij 之间处理 Junits 中的相对路径

IntelliJ IDEA 17和Maven构建javaWeb项目

Intellij 处理混合项目(maven+gradle)