java - the - project property gradle
¿Cómo le digo a Gradle que use una versión específica de JDK? (8)
Agregué esta línea en mi archivo GRADLE_HOME / bin / gradle - export JAVA_HOME=/path/to/java/version
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=<path to my desired JDK>
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 compilación (algo así como
use JAVA_HOME=<my special JDK path defined somewhere else defined>
) - 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 compilació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.
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
Dos caminos
En
gradle.properties
en el directorio.gradle
de suHOME_DIRECTORY
setorg.gradle.java.home=/path_to_jdk_directory
En tu
build.gradle
compileJava.options.fork = true compileJava.options.forkOptions.executable = /path_to_javac
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
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 ..."
Luego vaya a "Inicio de Java" y pegue la ruta de acceso de Java que desee.
Tenga en cuenta que bin se agregará a la tarea gradle. Por lo tanto, no agregue el "contenedor" a la ruta.
Para las personas que terminan aquí cuando buscan el equivalente de Gradle de la propiedad Maven maven.compiler.source
(o <source>1.8</source>
):
En build.gradle puedes lograr esto con
apply plugin: ''java''
sourceCompatibility = 1.8
targetCompatibility = 1.8
Ver la documentación de Gradle sobre esto .
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.
Si está utilizando linux y gradle wrapper, puede usar la siguiente solución.
Agregar ruta al archivo local.properties:
javaHome=<path to JDK>
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.