variable the sourcecompatibility property please intellij configurar java gradle build.gradle

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.



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


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.