En mi máquina tengo instaladas dos versiones de Java: (1.6 y 1.7 instaladas manualmente por mí). Los necesito a ambos para diferentes proyectos. Pero para Maven necesito 1.7, ahora mi Maven usa la versión 1.6 java, ¿cómo puedo configurar Maven para que use 1.7?
162
Respuestas:
Maven usa el
JAVA_HOME
parámetro para encontrar qué versión de Java se supone que debe ejecutar. Veo por su comentario que no puede cambiar eso en la configuración.JAVA_HOME
parámetro justo antes de iniciar maven (y cambiarlo nuevamente si es necesario).mvn
(no Windows) /mvn.bat
/mvn.cmd
(Windows) y configurar su versión de Java explícitamente allí.fuente
JAVA_HOME
su shell local sin cambiar la configuración de su máquina (tan pronto como cierre ese shell, el cambio desaparecerá). Incluso puede cambiarlo por un solo comando:JAVA_HOME=/path/to/jdk17/ mvn build
En el POM, puede establecer las propiedades del compilador, por ejemplo, para 1.8:
fuente
Agregar una solución para personas con múltiples versiones de Java instaladas
Tenemos una gran base de código, la mayoría de los cuales está en Java. La mayoría de lo que trabajo está escrito en Java 1.7 o 1.8. Como
JAVA_HOME
es estático, creé alias en mi.bashrc
para ejecutar Maven con diferentes valores:Esto me permite ejecutar Maven desde la línea de comandos en mi máquina de desarrollo, independientemente de la versión JDK utilizada en el proyecto.
fuente
mvn2
ymvn3
definido y el nombre se vuelve un poco extraño cuando las versiones de Java también entran en juego ...: Dalias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
&&
anteriormvn
. mvn no ve el valor de JAVA_HOME con&&
.En windows
Si no desea cambiar su
JAVA_HOME
variable dentro de las variables del sistema.Edite su
mvn.bat
archivo y agregue una línea como estaEsto se puede hacer después de lo
@REM ==== START VALIDATION ====
mencionado por @JonathanEn Mac (¿y Linux?)
Si no desea cambiar su
JAVA_HOME
variable dentro de su~/.bashrc
o~/.bash_profile
se puede crear un
~/.mavenrc
archivo y volver a definir suJAVA_HOME
uso de la herramienta de inicio_javaPrueba de cordura
Puede verificar que todo funcione bien ejecutando los siguientes comandos. La versión jdk debería ser diferente.
mvn -version
luego
java -version
fuente
Agregar mis dos centavos y proporcionar explícitamente la solución.
Tengo dos JDK instalados en mi máquina con Windows,
JDK 1.5
yJDK 1.6
.Mi valor predeterminado (y configurado en la variable de entorno del sistema de Windows)
JAVA_HOME
está configurado enJDK 1.5
.Sin embargo, tengo un proyecto maven que necesito construir (es decir, Etsy.com de JBehave Tutorial ) usando
JDK 1.6
.Mi solución en este escenario (¡que funcionó!), Es la sugerida por
@DanielBarbarian
configurarlomvn.bat
.Para algunos que no están familiarizados con el archivo por lotes de Windows, básicamente agregué la
set JAVA_HOME=<path_to_other_jdk>
línea después@REM ==== START VALIDATION ====
demvn.bat
(es decir,%MAVEN_HOME%\bin\mvn.bat
):fuente
mvn.bat
se renombra amvn.cmd
.Hace poco, después de siete largos años con Maven, aprendí sobre toolchains.xml. Maven lo tiene incluso documentado y lo admite desde 2.0.9 - documentación de toolchains
Así que agregué un archivo toolchain.xml a mi carpeta ~ / .m2 / con el siguiente contenido:
Le permite definir qué diferentes JDKs Maven puede usar para construir el proyecto, independientemente de con qué JDK Maven se ejecute. Algo así como cuando define JDK a nivel de proyecto en IDE.
fuente
Una solución simple al problema:
En Mac, se vería algo así como:
PD: Un caso especial que encontré es que el comando dado anteriormente no funciona en el shell 'fish'. También tenía bash shell disponible y funcionó bien allí. solo use el comando 'bash' para cambiar a bash shell.
fuente
Puede configurar fuentes de compilación utilizando diferentes JDK con
maven-compiler-plugin
.Simplemente especifique la ruta a
javac
en la<executable>
etiqueta. Por ejemplo, para java11 se ve así:fuente
Para evitar cualquier impacto en su proyecto y en sus Variables de entorno, puede configurar el complemento del compilador Maven solo para el POM del proyecto, especificando la versión Java de origen y destino
fuente
Puede configurar Maven para usar cualquier versión de Java siguiendo las instrucciones a continuación.
Instale jenv en el enlace de su máquina
Verifique las versiones disponibles de Java instaladas en su máquina emitiendo el siguiente comando en la línea de comandos.
Puede especificar la versión global de Java con el siguiente comando.
Puede especificar la versión local de Java para cualquier directorio (Proyecto) utilizando el siguiente comando en el directorio en la línea de comandos.
agregue la versión correcta de Java en su pom.xml
si está ejecutando maven en la línea de comandos, instale el complemento jenv maven utilizando el siguiente comando
Ahora puede configurar cualquier versión de Java en su máquina para cualquier proyecto sin ningún problema.
fuente
En Mac, (suponiendo que tenga instalada la versión correcta)
JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests
fuente
Sin cambiar las Variables de entorno, puede administrar la versión de Java en función del nivel del proyecto utilizando el Complemento del compilador de Maven.
Método 1
Método 2
fuente
En Windows, solo agrego varios archivos por lotes para diferentes versiones de JDK a la carpeta bin de Maven de esta manera:
mvn11.cmd
entonces puede usar
mvn11
para ejecutar Maven en el JDK especificado.fuente
En Linux / Unix, la configuración de JAVA_HOME dentro del script de shell 'mvn' se anula
por favor, dónde agregar variables de ruta JAVA_HOME y MAVEN en Linux
fuente
No tuve éxito en mac con solo configurar
JAVA_HOME
en la consola, pero tuve éxito con este enfoque~/.mavenrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
fuente
También puede tener instaladas dos versiones de maven y editar una de ellas, editando aquí:
reemplazando sus% java_home% apariencias a su ruta deseada de java. Luego solo ejecuta maven desde esa ruta modificada
fuente