5

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

12

Не могу разобраться, как это сделать

Ситуация:

  • У меня есть приложение, созданное с помощью 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 ответ(ов)

4

Существует два способа:

  1. В файле gradle.properties, расположенному в директории .gradle вашего домашнего каталога (HOME_DIRECTORY), добавьте строку:

    org.gradle.java.home=/path_to_jdk_directory
    

Или:

  1. В вашем файле build.gradle добавьте следующие строки:

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

Оба способа помогут указать Gradle путь к JDK. Выберите тот, который лучше подходит для вашего проекта!

2

Если вы добавите JDK_PATH в файл gradle.properties, ваша сборка станет зависимой от этого конкретного пути. Вместо этого лучше запустить gradle задачу с помощью следующего параметра командной строки:

gradle build -Dorg.gradle.java.home=/JDK_PATH

Таким образом, ваша сборка не будет зависеть от какого-либо конкретного пути.

0

Если вы используете Gradle Wrapper, вы можете выполнить команду, указав путь к JDK, следующим образом:

./gradlew -Dorg.gradle.java.home=/путь_к_директории_jdk
0

Вы можете легко указать желаемую версию Java, настроив её на уровне проекта в файле gradle.properties. Это повлияет только на текущий проект, а не изменит версию языка для всех проектов в системе.

org.gradle.java.home=<ПУТЬ_К_ВАШЕМУ_JDK>
0

Чтобы изменить настройки вашего проекта, вам нужно отредактировать файл 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 эти шаги помогли мне решить проблемы с компиляцией.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь