为什么Maven使用JDK 1.6但我的java -version是1.7

问题

我是maven的新手,也是MacOS的新手。

我在我的终端设置了maven,当获得版本设置(使用mvn -v)时,似乎它使用了JDK 1.6,而我安装了JDK 1.7。有什么不对的吗?

我输入的命令是:

blues:helloworld Ninja$ java -version

java版"1.7.0_05"
Java(TM)SE运行时环境(版本1.7.0_05-b06)
Java HotSpot(TM)64位服务器VM(构建23.1-b03,混合模式)`

blues:helloworld Ninja$ mvn -v

Apache Maven 3.1.0(893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32 0800)
Maven home:/usr/local/Cellar/maven/3.1.0/libexec
Java版本:1.6.0_51,供应商:Apple Inc.
Java home:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
默认语言环境:zh_CN,平台编码:EUC_CN
操作系统名称:"mac os x",版本:"10.8.4",arch:"x86_64",系列:"mac"


#1 热门回答(219 赞)

将以下内容添加到your~/.mavenrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home

#第二解决方案:

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile


#2 热门回答(45 赞)

进入

/System/Library/Frameworks/JavaVM.framework/Versions

并更新CurrentJDK的符号链接指向

/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/

例如。

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK

现在它将立即起作用。


#3 热门回答(38 赞)

你也可以这样做,

<properties>
      ...  

      <!-- maven-compiler-plugin , aka JAVA Compiler 1.7 -->
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.source>1.7</maven.compiler.source>

      ...  
</properties>