java version - Как сообщить Gradle использовать конкретную версию JDK?




sourcecompatibility 11 (8)

Два пути

  1. В gradle.properties в каталоге .gradle в вашем HOME_DIRECTORY установлен org.gradle.java.home=/path_to_jdk_directory

  2. В вашем build.gradle

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

Я не могу понять, как это работает.

Сценарий:

  • У меня есть приложение, построенное с помощью gradle
  • Приложение использует JavaFX

Что я хочу

  • Используйте переменную (определенную для разработчика), которая указывает на установку JDK, который будет использоваться для построения всего приложения / тестов / ...

Я думал о файле gradle.properties , определяющем переменную. Что-то вроде

JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>

Что я не хочу

  • укажите JAVA_HOME в желаемый JDK

Я мог бы жить со многими предложениями:

  • решение, которое определяет переменную системной среды, которую я могу проверить в моем скрипте build.gradle
  • переменная, определенная в gradle.properties
  • переопределяя переменную JAVA_HOME только для контекста сборки (что-то вроде use JAVA_HOME=<my special JDK path defined somewhere else defined> )
  • что-то еще я не думал о

Вопрос:

  • Как gradle.properties переменную (как она определяется как переменная в переменной gradle.properties , переменная системной среды, ...) к процессу сборки?

У меня есть более одного JDK7, и вам нужно указать специальную версию (минимальную версию JDK_u).

Любой ответ приветствуется, и я благодарен за каждый намек в правильном направлении.


Я использую 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

Есть еще один вариант. В ваших задачах gradle вы можете установить желаемый путь jdk. (Я знаю, что это время, так как вопрос был опубликован. Этот ответ может помочь кому-то.)

Щелкните правой кнопкой мыши по развертыванию или любой другой задаче и выберите «Open Gradle Run Configuration ...»

Затем перейдите к «Java Home» и вставьте желаемый путь Java.

Обратите внимание, что bin будет добавлен самой задачей градации. Поэтому не добавляйте «bin» в путь.


Как видно в 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


Если вы используете оболочку linux и gradle, вы можете использовать следующее решение.

Добавить путь к файлу local.properties:

javaHome=<path to JDK>

Добавьте в свой файл сценария gradlew:

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 не должен включаться в систему контроля версий.


Я добавил эту строку в мой файл GRADLE_HOME / bin / gradle - export JAVA_HOME=/path/to/java/version


Людям, заканчивающимся здесь при поиске эквивалента Gradle свойства Maven maven.compiler.source (или <source>1.8</source> ):

В build.gradle вы можете добиться этого с помощью

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

См. Документацию Gradle .


Я столкнулся с этой проблемой, когда я запустил следующую команду в Ubuntu:

ionic build android

Чтобы решить эту проблему, я сделал следующие шаги:

ln -sf /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java /usr/lib/jvm/default-java

Добавьте JAVA_HOME в / etc / environment:

vi /etc/environment

Добавить:

JAVA_HOME="/usr/lib/jvm/default-java"

После сохранения прочитайте:

source /etc/environment

Наконец, вы можете запустить команду сборки.







java gradle build.gradle