Por qué Maven usa JDK 1.6 pero mi versión de Java es 1.7

Soy nuevo en maven, y también en MacOS.

He configurado Maven en mi terminal, y al obtener la configuración de la versión (usando mvn -v ) parece que usa JDK 1.6, mientras tengo instalado JDK 1.7. ¿Hay algo mal?

Los comandos que ingreso son estos:

 blues:helloworld Ninja$ java -version 
 java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)` 
 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 version: 1.6.0_51, vendor: Apple Inc. Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Default locale: zh_CN, platform encoding: EUC_CN OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac" 

agregue lo siguiente a su ~/.mavenrc :

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

Segunda solución:

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

Meterse en

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

y actualice el enlace simbólico CurrentJDK para señalar

 /Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/ 

P.ej

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

Ahora funcionará inmediatamente.

También puedes hacer,

  ...  1.7 1.7 ...  

También puede decirle explícitamente a maven qué versión de Java comstackr. Puedes intentar agregar el maven-compiler-plugin a tu pom.

  [...]  [...]   org.apache.maven.plugins maven-compiler-plugin 3.1  1.7 1.7    [...]  [...]  

Si importó un proyecto maven en un IDE, entonces probablemente haya una configuración maven en su IDE para el comstackdor predeterminado que está utilizando su corredor maven.

Me ayudó. Solo agrégalo en tu pom.xml.

De forma predeterminada, el complemento del comstackdor Maven usa Java 1.5 o 1.6, debe redefinirlo en su pom.xml.

    org.apache.maven.plugins maven-compiler-plugin  1.8 1.8     

Para usuarios de Eclipse. Si tiene una Configuración de ejecución que limpia el paquete, por ejemplo.

En el panel de Configuración de ejecución hay una pestaña JRE donde puede especificar en qué tiempo de ejecución debe ejecutarse. Tenga en cuenta que esta configuración anula lo que está en el pom.xml.

Llegué tarde a esta pregunta, pero creo que la mejor manera de manejar las versiones de JDK en MacOS es mediante el uso del script descrito en: http://www.jayway.com/2014/01/15/how-to-switch-jdk -version-on-mac-os-x-maverick /

Por favor revisa la compatibilidad. mvn 3.2.1 con mvn 3.2.1 y jdk 1.6.0_37 durante muchas horas. Todas las variables se establecieron pero no funcionaba. Finalmente actualicé jdk to 1.8.0_60 y mvn 3.3.3 y funcionó. Variables de entorno de la siguiente manera:

 JAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0_60 MVN_HOME=C:\ProgramFiles\apache-maven\apache-maven-3.3.3 M2=%MVN_HOME%\bin extend system level Path- ;%M2%;%JAVA_HOME%\bin; 

La solución de @MasterGaurav está funcionando perfectamente,

Normalmente pongo el conmutador java en una función zsh:

 alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home' function java_use() { export JAVA_HOME=$(/usr/libexec/java_home -v $1) echo export "JAVA_HOME=$(/usr/libexec/java_home -v $1)" > ~/.mavenrc export PATH=$JAVA_HOME/bin:$PATH java -version } 

Luego puede ejecutar java_ls two obtener todo el jvm disponible en su máquina, ejecutar java_use 1.7 para usar la versión 1.7 tanto para java como para maven.