2010-01-06 25 views
14

Tratando de hacer que Maven, Java y OS X jueguen bien juntos, algo que he hecho varias veces sin problemas en máquinas con Linux y Windows. Supuse que todo lo que tenía que hacer era descargar Maven, configurar las variables de entorno y estar bien. Así que aquí está un fragmento de mi .bash_profile ...Maven, JAVA_HOME con OS X

export JAVA_HOME=/Library/Java/Home/ 
export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1 
export PATH=$PATH:$M2_HOME/bin 

El ajuste JAVA_HOME es lo que Apple recomienda ser utilizado en this Q&A page. Sin embargo, después de lanzar un terminal y ejecutar mvn --version, aquí está la salida ...

Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400) 
Java version: 1.6.0_17 
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home 
Default locale: en_US, platform encoding: MacRoman 
OS name: "mac os x" version: "10.6.2" arch: "x86_64" Family: "mac" 

Alguna idea de por qué el JAVA_HOME que estoy poniendo en mi .bash_profile está siendo ignorada por Maven? Está causando problemas porque cosas como rt.jar no se encuentran en el JAVA_HOME que Maven está usando. Puedo evitar esto creando enlaces simbólicos y otros hackers en el hogar que utiliza Maven, pero prefiero que funcione correctamente, ya que esto explotará la próxima vez que Apple presione una actualización de Java. Gracias por cualquier ayuda ...

Respuesta

-3

Bueno, lo primero que comprobaría es si mvn es un script. Si es así, puede ver cómo se abastece el medio ambiente. Si no es así, buscaría cualquier archivo de configuración típicamente llamado .mvnrc, o algo en/etc. ¡Por supuesto que no dañaría a RTFM!

+2

se trata de un guión, me puede ver cómo este bloque if [-z "$ JAVA_HOME"]; entonces JAVA_HOME =/System/Library/Frameworks/JavaVM.framework/Versiones/$ {} versión_java/Inicio fi podría afectar a las cosas, pero cuando se ejecuta por sí mismo la var $ JAVA_HOME se establece de modo que la cláusula si se ignora. En cuanto a leer el manual, hecho. Al igual que la búsqueda en las listas de usuarios de Maven. Este fue mi último recurso antes de confiar en soluciones de pirateo. Si no tiene una respuesta, no responda. – ian

+0

Disculpas por el formateo anterior ... – ian

2

En mi Mac,/Library/Java/Home es un enlace simbólico (en realidad el comienzo de una cadena de enlaces simbólicos) que finalmente apunta a /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home. Así que no creo que Maven esté ignorando nada. Simplemente te está dando la ubicación real.

1

Tengo la misma configuración y todo funciona bien. DESEE LA variable de entorno "JAVA_HOME" en su script de shell. La instalación de Mac se ocupa de eso. Lo estás poniendo mal de todos modos.

Desarbúyalo, fuente su shell de archivo o inicio y vuelva a intentarlo.

11

El problema es que el enlace simbólico "CurrentJDK" dentro de las versiones de puntos JavaVm.framework a la edad JDK, así que cuando utiliza los siguientes comandos para configurar el CurrentJDK a la más reciente (1.7 .0_45) funciona

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

referencia: http://java.dzone.com/articles/installing-jdk-7-mac-os-x

+0

obtengo una "Operación no permitida" por "sudo rm CurrentJDK". Estoy en El Captain – Wolf7176

+0

¿Estás seguro de que tu usuario actual tiene permiso para leer/escribir esta carpeta? Es mejor usar usuario administrador –