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.xmlpero no tengo un settings.xml. Además, no quiero usar 1.6 para todas las compilaciones de Maven.
Un inconveniente es que estoy usando mvnen 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_HOMEse 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_HOMEpuntos a JDK7 (que ejecutará procesos maven)Tu
pom.xmlpodrí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=truey-Dmaven.compiler.executable=/path/to/target/javacen 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
forkes lotrueque esfalsepor 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_HOMEvariable. 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:runComo 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_HOMEvariable de entorno como dice Pascal: en Cygwin si usa bash como su shell debería ser:Nunca perjudica también anteponer la
binruta del directorio de Java a laPATHvariable de entorno con:Agregue también
maven-enforce-pluginpara 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
brewdeMacentonces es probable que usted encontrará en el directorio básico de Java aquí:El siguiente paso ahora sería encontrar a qué
Java Homedirectorio apunta Maven. Para encontrarlo, escriba el comando:mvn -versionLos campos que nos interesan aquí son:
Java versionyruntime.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/HomePara cambiar la versión Java de Maven, necesitamos agregar la
Java 8ruta de inicio a laJAVA_HOMEvariable env.Para hacer eso necesitamos ejecutar el comando:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Homeen 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_HOMEvariable en el~/.profilearchivo.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
~/.profilearchivo:export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/HomePuede 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