Gradle, используя 2 разных JDK - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы использовать некоторые функции из Java 9 и 10 в моем java-приложении для ПК, которое имеет общий код с android-приложением.Когда я использую jdk 10 или jdk 9, приложение для Android собирается, но не запускается (выдает много ошибок).Когда я использую JDK 8 для всего проекта, все работает правильно, без каких-либо ошибок.Когда я вручную строю проект, используя 2 разных jdk, все работает нормально.Я попытался установить targetCompability и sourceCompability для Android-приложения для JavaVersion.Version_1_7, но это не помогает.Я пытался использовать разные jdks для java 9 и java 10, но это не помогло с этой проблемой.

Я хотел бы собрать приложение для Android и общий компонент с jdk8 и другие компоненты с jdk10.Можно ли заставить gradle использовать разные jdk для конкретного проекта без использования внешних инструментов, таких как bash?

Моя структура проекта выглядит следующим образом:

build.gradle
common-component(jdk8)/build.gradle
PC(jdk 10)/build.gradle
device-Android(jdk 8)/build.gradle

1 Ответ

0 голосов
/ 19 мая 2018

Я нашел обходной путь. Он отлично работает с Gradle 4.7 (поддержка Java 10 была добавлена ​​в этом выпуске). Этот взлом / обходной путь требует запуска проекта с использованием более низкого JDK, такого как Oracle JDK 8 или OpenJDK. Мы можем построить некоторые компоненты, используя более высокую версию JDK, но мы не можем построить проект JDK с JDK10, а затем использовать его с JDK8, если мы укажем targetcompablility выше 1.8. Он будет работать только для проекта Java и, вероятно, не будет работать для плагина Android и других языков JVM.

Часть build.gradle для приложения на ПК:

project (':pc-client') {
    dependencies {
        compile project(':net-default')
        testcompile JUNIT
    }
    compileJava {
        options.fork = true
        options.forkOptions.javaHome = file('/usr/lib/jvm/java-10-oracle')
        targetCompatibility = 1.10
        sourceCompatibility = 1.10
    }

   compileTestJava {
        options.fork = true
        options.forkOptions.javaHome = file('/usr/lib/jvm/java-10-oracle')
        targetCompatibility = 1.10
        sourceCompatibility = 1.10
    }
}
...