Как указать Gradle использовать конкретную версию JDK?
Не могу разобраться, как это сделать
Ситуация:
- У меня есть приложение, созданное с помощью Gradle.
- Приложение использует JavaFX.
Что я хочу:
- Использовать переменную (определённую на каждой машине разработчика), которая указывает на установку JDK, которая будет использоваться для сборки всего приложения / тестов и т.д.
Я думал о том, чтобы создать файл gradle.properties
, определяя переменную. Что-то вроде:
JAVA_HOME_FOR_MY_PROJECT=<путь к желаемому JDK>
Чего я не хочу:
- Указывать
JAVA_HOME
на желаемый JDK.
Я был бы рад любым предложениям:
- Решение, которое определяет системную переменную окружения, которую я смогу проверить в своём скрипте build.gradle.
- Переменная, определённая в
gradle.properties
. - Переопределение переменной
JAVA_HOME
только для контекста сборки (что-то вродеuse JAVA_HOME=<путь к моей специальной версии JDK, определенной в другом месте>
). - Что-то ещё, о чём я не подумал.
Вопрос:
- Как связать переменную (независимо от того, как она определена — в
gradle.properties
, как системная переменная окружения и т.д.) с процессом сборки?
У меня доступно более одной версии JDK7, и мне нужно указать на специальную версию (минимальная версия JDK_u).
Буду благодарен за любые ответы и подсказки, которые помогут мне в правильном направлении.
5 ответ(ов)
Существует два способа:
В файле
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'
Оба способа помогут указать Gradle путь к JDK. Выберите тот, который лучше подходит для вашего проекта!
Если вы добавите JDK_PATH
в файл gradle.properties, ваша сборка станет зависимой от этого конкретного пути. Вместо этого лучше запустить gradle задачу с помощью следующего параметра командной строки:
gradle build -Dorg.gradle.java.home=/JDK_PATH
Таким образом, ваша сборка не будет зависеть от какого-либо конкретного пути.
Если вы используете Gradle Wrapper, вы можете выполнить команду, указав путь к JDK, следующим образом:
./gradlew -Dorg.gradle.java.home=/путь_к_директории_jdk
Вы можете легко указать желаемую версию Java, настроив её на уровне проекта в файле gradle.properties
. Это повлияет только на текущий проект, а не изменит версию языка для всех проектов в системе.
org.gradle.java.home=<ПУТЬ_К_ВАШЕМУ_JDK>
Чтобы изменить настройки вашего проекта, вам нужно отредактировать файл gradle.properties
следующим образом:
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
org.gradle.java.home=C\:\\Program Files\\Java\\jdk-11.0.15
Также необходимо внести изменения в файл build.gradle
:
android {
compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility 11
targetCompatibility 11
}
kotlinOptions {
jvmTarget = '11'
useIR = true
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
После установки Flutter 3.0 и JDK 11 эти шаги помогли мне решить проблемы с компиляцией.
Gradle сборка без тестов
Почему нет ConcurrentHashSet, если есть ConcurrentHashMap?
Как объявить массив в одну строку?
Загрузка JDK Java на Linux через wget приводит к отображению страницы лицензии вместо установки
Создание репозитория Spring без сущности