¿Cómo le digo a Gradle que use una versión específica de JDK?

No puedo entender que esto funcione.

Guión:

  • Tengo una aplicación construida con gradle
  • La aplicación usa JavaFX

Lo que quiero

  • Use una variable (definida por máquina desarrolladora) que apunte a una instalación de un JDK que se usará para construir toda la aplicación / pruebas / …

Pensé en tener el archivo gradle.properties , que define la variable. Algo como

 JAVA_HOME_FOR_MY_PROJECT= 

Lo que no quiero

  • apunte JAVA_HOME al JDK deseado

Podría vivir con muchas sugerencias:

  • una solución que define una variable de entorno del sistema que puedo verificar en mi script build.gradle
  • una variable definida en gradle.properties
  • anulando la variable JAVA_HOME solo para el contexto de comstackción (algo así como use JAVA_HOME= )
  • algo más en lo que no pensé

Pregunta:

  • Cómo conectar una variable (¿cómo se define, como variable en gradle.properties , variable de entorno del sistema, …) al proceso de comstackción?

Tengo más de un JDK7 disponible y necesito apuntar a una versión especial (versión mínima de JDK_u).

Cualquier respuesta es apreciada y estoy agradecido por cada pista en la dirección correcta.

Dos caminos

  1. En gradle.properties en el directorio .gradle de su HOME_DIRECTORY set org.gradle.java.home=/path_to_jdk_directory

  2. En tu build.gradle

     compileJava.options.fork = true compileJava.options.forkOptions.executable = /path_to_javac 

Si agrega JDK_PATH en gradle.properties, su creación dependerá de esa ruta en particular. En cambio, ejecuta la tarea de gradle con el siguiente parametemer de la línea de comando

 gradle build -Dorg.gradle.java.home=/JDK_PATH 

De esta forma, tu construcción no depende de un camino concreto.

Para las personas que terminan aquí cuando buscan el equivalente de Gradle de la propiedad Maven maven.compiler.source (o 1.8 ):

En build.gradle puedes lograr esto con

 apply plugin: 'java' sourceCompatibility = 1.8 targetCompatibility = 1.8 

Ver la documentación de Gradle sobre esto .

Como se ve en Gradle (plugin de Eclipse)

http://www.gradle.org/get-started

Gradle usa cualquier JDK que encuentre en su ruta (para verificar, use java -version). Alternativamente, puede configurar la variable de entorno JAVA_HOME para que apunte al directorio de instalación del JDK deseado.


Si está utilizando este plugin de Eclipse o Enide Studio 2014 , la alternativa JAVA_HOME para usar (establecer en Preferencias) estará en la versión 0.15, consulte http://www.nodeclipse.org/history

Si está utilizando linux y gradle wrapper, puede usar la siguiente solución.

Agregar ruta al archivo local.properties:

 javaHome= 

Agregar a su archivo de script gradlew:

 DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) source $DIR/local.properties 2>/dev/null if ! [ -z "$javaHome" ] then JAVA_HOME=$javaHome fi 

En esta solución, cada desarrollador puede establecer su propia ruta JDK. El archivo local.properties no se debe incluir en el sistema de control de versiones.

Agregué esta línea en mi archivo GRADLE_HOME / bin / gradle – export JAVA_HOME=/path/to/java/version

Hay una opción más a seguir. En las tareas de gradle, puede establecer la ruta de jdk deseada. (Sé que esto es un tiempo desde que se publicó la pregunta. Esta respuesta puede ayudar a alguien).

Haga clic derecho en la implementación o cualquier otra tarea y seleccione “Abrir configuración de ejecución de Gradle …”

enter image description here

Luego vaya a “Inicio de Java” y pegue la ruta de acceso de Java que desee.

enter image description here

Tenga en cuenta que bin se agregará a la tarea gradle. Por lo tanto, no agregue el “contenedor” a la ruta.

Estoy usando Gradle 4.2. El JDK predeterminado es Java 9. Al inicio de Java 9, Gradle 4.2 se ejecuta correctamente en JDK 8 (no en JDK 9).

Configuro JDK manualmente de esta manera, en el archivo %GRADLE_HOME%\bin\gradle.bat :

 @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME%.. @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS= @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @rem VyDN-start. set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\ @rem VyDN-end. set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @rem VyDN-start. set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\ @rem VyDN-end. set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\lib\gradle-launcher-4.2.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal :omega