Especifique JDK para que Maven lo use

Estoy intentando construir un complemento de 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. He encontrado pocas menciones en Internet, pero parece que no se aplican a mí. Algunos sugieren agregar algunas configuraciones a .m2/settings.xml pero no tengo un settings.xml . Además, no quiero usar 1.6 para todas las comstackciones 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, la conclusión es, ¿hay alguna manera de especificar un jdk para una sola invocación de maven?

    Entonces, la conclusión es, ¿hay alguna manera de especificar un jdk para una sola invocación de maven?

    Cambie temporalmente su JAVA_HOME .

    Parece que maven ahora da una solución aquí: comstackr fonts usando un JDK diferente

    Digamos que su JAVA_HOME apunta a JDK7 (que ejecutará procesos de maven)

    Tu pom.xml podría ser:

         org.apache.maven.plugins maven-compiler-plugin  1.6 1.6      org.apache.maven.plugins maven-compiler-plugin 3.1  true true ${JAVA_1_6_HOME}/bin/javac 1.3     

    Si sus desarrolladores solo agregan (y personalizan) las siguientes líneas en su settings.xml , su pom será independiente de la plataforma:

      [...]  [...]  compiler  C:\Program Files\Java\j2sdk1.4.2_09 C:\Program Files\Java\j2sdk1.6.0_18    [...]  compiler   

    Como dijiste “Además, no quiero usar 1.6 para todas las comstackciones de maven”. Así que mejor voy a decir que modifiques tu archivo pom y especifiques qué versión de jdk usar.

        org.apache.maven.plugins maven-compiler-plugin 3.7.0  1.9 1.9     

    Garantizará que su proyecto en particular use esa versión de jdk.

    compile: compile tiene una propiedad de usuario que le permite especificar una ruta al javac .

    Tenga en cuenta que esta propiedad del usuario solo funciona cuando fork es true que es false de manera predeterminada.

     $ mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable=/path/to/the/javac compile 

    Es posible que deba duplicar el valor si contiene espacios.

     > mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable="C:\...\javac" compile 

    Consulte también Precedencia de propiedades personalizadas de Maven .

    Te digo que configures JAVA_HOME como dice Pascal: en cygwin si usas bash ya que tu shell debería ser “exportar JAVA_HOME = / cygdrive / c / pathtothejdk” Y nunca daña exportar también el directorio java bin a la RUTA con “export PATH” = $ {JAVA_HOME} / bin: $ {PATH} ”

    y también agrega maven-enforce-plugin para asegurarte de que se usa el jdk correcto. Esta es una buena práctica para tu pom.

        org.apache.maven.plugins maven-enforcer-plugin   enforce-versions  enforce     1.6         

    http://maven.apache.org/plugins/maven-enforcer-plugin/usage.html

    Sé que es un hilo viejo. Pero tenía algunos problemas con algo similar a esto en la fuente de comstackción de Maven para Java 8. Me di cuenta de que con una solución rápida mencionada en este artículo pensé que puedo ponerlo aquí y quizás pueda ayudar a otros:

      UTF-8 1.8 1.8  

    Maven usa la variable $ JAVACMD como el último comando de java, configúralo en el lugar donde el ejecutable de Java cambiará maven a diferentes JDK.

    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 en la página de configuración.

    Para Java 9:

        maven-compiler-plugin 3.7.0  9 9     

    Tuve un problema de comstackción con maven dentro de Eclipse en Windows 7.

    Aunque observé que mvn build funcionaba perfectamente desde la línea de comandos.

     mvn -T 5 -B -e -X -U -P test clean install -Dmaven.surefire.debug --settings ..\..\infra-scripts\maven-conf\settings.xml > output.log 

    Eclipse estaba considerando como JVM predeterminada una instalación de JRE en lugar de JDK, por lo que estaba fallando en la comstackción.

    Agregué a eclipse.ini siguiente línea:

     -vm C:\Program Files (x86)\Java\jdk1.8.0_25\bin 

    También cuando comencé desde eclipse utilicé en la sección siguiente de la sección “Metas”:

     -T 5 -B -e -X -U -P test clean install -Dmaven.surefire.debug --settings ..\..\infra-scripts\maven-conf\settings.xml 

    El error de comstackción se resolvió.