Как мне указать Gradle использовать определенную версию JDK?
Я не могу понять, как заставить это работать.
Сценарий:
У меня есть приложение, созданное с помощью 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, системная переменная окружения, ...) к процессу сборки?
У меня доступно более одного JDK7, и мне нужно указать специальную версию (минимальную версию JDK_u).
Приветствуется любой ответ, и я благодарен за каждый намек в правильном направлении.
Переведено автоматически
Ответ 1
Два способа
В gradle.properties в .gradle каталоге в вашем HOME_DIRECTORY наборе org.gradle.java.home=/path_to_jdk_directory
Если вы добавите JDK_PATH в gradle.properties, ваша сборка станет зависимой от этого конкретного пути. Вместо этого запустите gradle task со следующим параметром командной строки
gradle build -Dorg.gradle.java.home=/JDK_PATH
Таким образом, ваша сборка не зависит от какого-то конкретного пути.
Ответ 3
Для людей, попадающих сюда при поиске Gradle-эквивалента свойства Maven maven.compiler.source (или <source>1.8</source>):
Gradle 6.7+ — Используйте поддержку набора инструментов Gradle
Правильный способ сделать это с современными версиями Gradle (версия 6.7+) - использовать поддержку.
Следующий блок, когда плагин java будет применен к текущему проекту, будет использовать Java 11 во всех задачах компиляции Java, тестирования и javadoc:
Настройка компилятора Kotlin для версий до 1.5.30 включает использование toolchain API для определения компилятора и передачу этой информации плагину. Другие плагины на основе компилятора могут быть настроены аналогичным образом.
val compiler = javaToolchains.compilerFor { languageVersion.set(JavaLanguageVersion.of(11)) }