- 这只是我解决问题的过程,不是官方教程,不同的机器有不同的情况,希望能够帮到你
首先下载的是Apache官网的Maven3.5.4的版本
-
安装在
- 然后就是配置Maven的环境,我是在.bash_profile里面配置的
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$MAVEN_HOME/bin:$PATH
- 接下来就顺理成章的测试了 mvn -v. 就提示我
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
- 矛头很自然的对向了JAVA_HOME. 百度跟GOOGLE了很多种方法基本上都在说重新配置环境变量, 加上
export JAVA_HOME = $(/usr/libexec/java_home)
这是apple官方建议的JAVA_HOME。 然而问题并没有被解决,然后在网上找到了调试运行mvn的方法
sh -x mvn
出现了一些调试画面
➜ ~ sh -x mvn
+ '[' -z '' ']'
+ '[' -f /etc/mavenrc ']'
+ . /etc/mavenrc
+++ /usr/libexec/java_home
++ export ``JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
+ '[' -f /Users/wongzhe/.mavenrc ']'
- cygwin=false
- mingw=false
- case "
uname
" in
++ uname - PRG=mvn
- '[' -h mvn ']'
++ pwd - saveddir=/Users/wongzhe
++ dirname mvn - MAVEN_HOME=./..
++ cd ./..
++ pwd - MAVEN_HOME=/Users
- cd /Users/wongzhe
- false
- false
- '[' -z /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home ']'
JAVACMD=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java
- 提示说JAVACMD的问题,同样在bash_profile中添加了JAVA_CMD
- 还是没有用,从上面的脚本运行调试中可以看出Maven是先从/etc/mavenrc中读取javahome的,所以我又尝试着把
JAVA_HOME=$(/usr/libexec/java_home)
加到mavenrc中。结果还是没有变化,这时候已经想死了。
最后还有个提示是M2_HOME 为false。我就在bash_profile中吧MAVEN_HOME改成了M2_HOME。source了一下。mvn - v 终于成功了
最后有个附加问题。就是每次重启terminal的时候都需要source一下bash_profile
发现zsh加载的是 ~/.zshrc文件,而 ‘.zshrc’ 文件中并没有定义任务环境变量。
解决办法是
在~/.zshrc文件最后,增加一行:
source ~/.bash_profile
参考链接:
https://stackoverflow.com/questions/45230150/java-home-is-not-working-in-maven
https://blog.csdn.net/science_Lee/article/details/79214127
https://stackoverflow.com/questions/27319495/error-java-home-is-not-defined-correctly-executing-maven/44564303#44564303