Как сообщить Gradle использовать конкретную версию JDK?
Я не могу понять, как это работает.
Сценарий:
- У меня есть приложение, построенное с помощью gradle
- В приложении используется JavaFX
Что я хочу
- Используйте переменную (определенную для машины-разработчика), которая указывает на установку JDK, который будет использоваться для построения всего приложения/тестов/...
Я думал о наличии файла gradle.properties
, определяющего переменную. Что-то вроде
JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>
Что я не хочу
- point
JAVA_HOME
к желаемому JDK
Я мог бы жить со многими предложениями:
- решение, определяющее переменную системной среды, которую я могу проверить в моем build.gradle script
- переменная, определенная в gradle.properties
- переопределение переменной JAVA_HOME только для контекста сборки (что-то вроде
use JAVA_HOME=<my special JDK path defined somewhere else defined>
)
- что-то еще я не думал о
Вопрос:
- Как подключить переменную (как она определяется как переменная в переменной
gradle.properties
, системная переменная среды...) для процесса сборки?
У меня доступно более одного JDK7 и нужно указать специальную версию (минимальная версия JDK_u).
Любой ответ приветствуем, и я благодарен за каждый намек в правильном направлении.
Ответы
Ответ 1
Два пути
- В
gradle.properties
в каталоге .gradle
в вашем HOME_DIRECTORY
установите org.gradle.java.home=/path_to_jdk_directory
или же:
-
В вашей build.gradle
compileJava.options.fork = true
compileJava.options.forkOptions.executable = /path_to_javac
Ответ 2
Если вы добавите JDK_PATH в gradle.properties, ваша сборка станет зависимой от этого конкретного пути.
Вместо этого запустите gradle задачу со следующим параметром командной строки
gradle build -Dorg.gradle.java.home=/JDK_PATH
Таким образом, ваша сборка не зависит от конкретного пути.
Ответ 3
Людям, maven.compiler.source
сюда при поиске эквивалента Gradle свойства Maven maven.compiler.source
(или <source>1.8</source>
):
В build.gradle вы можете добиться этого с
apply plugin: 'java'
sourceCompatibility = 1.8
targetCompatibility = 1.8
Смотрите документацию Gradle по этому вопросу.
Ответ 4
Если вы используете linux и gradle wrapper, вы можете использовать следующее решение.
Добавить путь к файлу local.properties:
javaHome=<path to JDK>
Добавьте в свой файл gradlew script:
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $DIR/local.properties 2>/dev/null
if ! [ -z "$javaHome" ]
then
JAVA_HOME=$javaHome
fi
В этом решении каждый разработчик может установить свой собственный путь JDK. Файл local.properties
не должен включаться в систему контроля версий.
Ответ 5
Я добавил эту строку в мой файл GRADLE_HOME/bin/gradle
export JAVA_HOME=/path/to/java/version
Ответ 6
Есть еще один вариант для подражания. В ваших задачах вы можете установить желаемый путь JDK. (Я знаю, что это время, так как вопрос был опубликован. Этот ответ может кому-то помочь.)
Щелкните правой кнопкой мыши на развертывании или любой другой задаче и выберите "Открыть конфигурацию запуска Gradle..."
![enter image description here]()
Затем перейдите к "Java Home" и вставьте желаемый путь Java.
![enter image description here]()
Обратите внимание, что bin будет добавлен самой задачей gradle. Так что не добавляйте "мусорное ведро" к пути.
Ответ 7
Как видно из Gradle (плагин Eclipse)
![]()
http://www.gradle.org/get-started
Gradle использует какой-либо JDK, который он находит на вашем пути (чтобы проверить, используйте java -version). Кроме того, вы можете установить переменную среды JAVA_HOME, чтобы указать на каталог установки желаемого JDK.
Если вы используете этот плагин Eclipse или Enide Studio 2014, альтернативный JAVA_HOME для использования (устанавливается в настройках) будет в версии 0.15, см. http://www.nodeclipse.org/history
Ответ 8
Если вы выполняете с использованием Gradle Wrap, вы можете запустить команду с путем JDK, как показано ниже
./gradlew -Dorg.gradle.java.home=/jdk_path_directory
Ответ 9
есть плагин Gradle, который автоматически загружает/загружает JDK:
https://plugins.gradle.org/plugin/com.github.rmee.jdk-bootstrap
Интеграция IDE еще не требуется, и для Windows требуется приличная оболочка.
Ответ 10
Я использую Gradle 4.2. По умолчанию JDK - это Java 9. В ранний день Java 9, Gradle 4.2 работает на JDK 8 правильно (не JDK 9).
Я устанавливал JDK вручную, как это, в файле %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