Estoy tratando de construir un plugin Hudson que he modificado y requiere jdk1.6. Esto está bien, pero no veo cómo puedo decirle a Maven dónde está el jdk diferente. Encontré pocas menciones en Internet, pero no parecen aplicarse a mí. Algunos sugieren agregar algo de configuración .m2/settings.xml
pero no tengo un settings.xml
. Además, no quiero usar 1.6 para todas las compilaciones de Maven.
Un inconveniente es que estoy usando mvn
en Cygwin, si eso es importante. Parece que debería poder hacer la especificación en el archivo pom del proyecto, pero el pom existente es bastante simple.
Entonces, en resumen, ¿hay alguna manera de especificar un jdk para una sola invocación de maven?
set JAVA_HOME="C:\Java\jdk7"
JAVA_HOME
se puede configurar para Maven (al menos en Mac) en este archivo:/private/etc/mavenrc
- Y eso puede usar algo como (¡tenga en cuenta las comillas no comillas simples!):export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_75`
export JAVA_HOME='D:/dev/java/jdk8/jre'
(funciona para mí)java -version
, todavía imprime la versión anterior.Parece que Maven ahora da una solución aquí: compilar fuentes usando un JDK diferente
Digamos sus
JAVA_HOME
puntos a JDK7 (que ejecutará procesos maven)Tu
pom.xml
podría ser:Si sus desarrolladores simplemente agregan (y personalizan) las siguientes líneas en su
settings.xml
, su pom será independiente de la plataforma:fuente
-Dmaven.compiler.fork=true
y-Dmaven.compiler.executable=/path/to/target/javac
en la línea de comandos.compilar: compilar tiene una propiedad de usuario que le permite especificar una ruta al
javac
.Tenga en cuenta que esta propiedad de usuario solo funciona cuando
fork
es lotrue
que esfalse
por defecto.Es posible que tenga que doble comillas el valor si contiene espacios.
Consulte también la precedencia de las propiedades personalizadas de Maven .
fuente
JAVA_HOME
variable. Por ejemplo (en bash shell):JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable=/usr/lib/jvm/java-8-openjdk-amd64/bin/javac spring-boot:run
Como dijiste "Además, no quiero usar 1.6 para todas las compilaciones de Maven" ... Así que mejor diré que modifiques tu archivo pom y especifiques qué versión jdk usar.
Se asegurará de que su proyecto particular use esa versión de jdk.
fuente
Digo que configure la
JAVA_HOME
variable de entorno como dice Pascal: en Cygwin si usa bash como su shell debería ser:Nunca perjudica también anteponer la
bin
ruta del directorio de Java a laPATH
variable de entorno con:Agregue también
maven-enforce-plugin
para asegurarse de que se utiliza el JDK correcto. Esta es una buena práctica para tu pom.Por favor, vea el complemento Maven Enforcer - Uso .
fuente
Sé que es un hilo viejo. Pero estaba teniendo algunos problemas con algo similar a esto en la fuente del compilador Maven para Java 8. Resolví esto con una solución rápida mencionada en este artículo, pensé que podía ponerlo aquí y quizás ayudar a otros:
fuente
Maven usa la variable $ JAVACMD como el comando final de Java, configúrelo donde el ejecutable de Java cambiará Maven a diferentes JDK.
fuente
Hudson también le permite definir varios tiempos de ejecución de Java y le permite invocar a Maven con uno de estos. Eche un vistazo más de cerca a la página de configuración.
fuente
Si ha instalado Java a través
brew
deMac
entonces es probable que usted encontrará en el directorio básico de Java aquí:El siguiente paso ahora sería encontrar a qué
Java Home
directorio apunta Maven. Para encontrarlo, escriba el comando:mvn -version
Los campos que nos interesan aquí son:
Java version
yruntime
.Maven está apuntando actualmente
Java 13
. Además, puede ver la ruta de inicio de Java bajo el tiempo de ejecución de la clave, que es:/usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home
Para cambiar la versión Java de Maven, necesitamos agregar la
Java 8
ruta de inicio a laJAVA_HOME
variable env.Para hacer eso necesitamos ejecutar el comando:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
en la terminal.Ahora, si comprobamos la versión de Maven, podemos ver que ahora apunta a Java 8.
El problema con esto es que si verifica la versión de Maven nuevamente en el nuevo terminal, encontrará que apunta a Java 13. Para evitar esto, sugeriría agregar la
JAVA_HOME
variable en el~/.profile
archivo.De esta manera, cada vez que se cargue su terminal, tomará el valor que definió en JAVA_HOME de forma predeterminada. Esta es la línea que necesita agregar en el
~/.profile
archivo:export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Puede abrir un nuevo terminal y verificar la versión de Maven, (
mvn -version
) y encontrará que esta vez apunta a Java 8.fuente
Tuve un problema de compilación con maven dentro de Eclipse en Windows 7.
Aunque observé que mvn build funcionaba bien desde la línea de comandos.
Eclipse estaba considerando como JVM predeterminado una instalación JRE en lugar de JDK, por lo que no se pudo compilar.
Agregué a eclipse.ini la siguiente línea:
También cuando comencé con el eclipse, utilicé en la sección "Objetivos" la siguiente lista:
Se solucionó el error de compilación.
fuente
Para Java 9:
fuente
Otra alternativa más para administrar múltiples versiones de jdk es jEnv
Después de la instalación, simplemente puede cambiar la versión de Java "localmente", es decir, para un directorio de proyecto específico:
Esto también hará que mvn use esa versión localmente, cuando habilite el complemento mvn:
fuente
También puede configurar el JDK para Maven en un archivo en su directorio de inicio
~/.mavenrc
:El script mvn verificará esta variable de entorno y se usará cuando esté presente:
https://github.com/CodeFX-org/mvn-java-9/tree/master/mavenrc
fuente