繁体   English   中英

Gradle使用2种不同的JDK

[英]Gradle using 2 different JDK

我想在我的PC java应用程序中使用Java 9和10中的一些功能,它们与android app有共同的代码。 当我使用jdk 10或jdk 9安卓应用程序正在构建时,它不会启动(它会抛出很多错误)。 当我使用jdk 8进行整个项目时,一切正常,没有任何错误。 当我使用2个不同的jdk手动构建项目时,一切正常。 我试着设置targetCompabilitysourceCompability为Android应用程序JavaVersion.Version_1_7 ,但它并不能帮助。 我尝试对java 9和java 10使用不同的jdks,但它对这个问题没有帮助。

我想用jdk8和其他组件用jdk10构建android应用程序和通用组件。 是否可以强制gradle在不使用bash等外部工具的情况下为特定项目使用不同的jdk?

我的项目结构如下:

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

我找到了解决方法。 它适用于gradle 4.7(此版本中添加了Java 10支持)。 此hack / workaround需要使用较低的JDK(如Oracle JDK 8或OpenJDK)启动项目。 我们可以使用更高版本的JDK构建一些组件,但我们不能使用JDK10构建JDK项目,如果我们指定targetcompablility高于1.8,则不能将它与JDK8一起使用。 它只适用于java项目,可能不适用于android插件和其他JVM语言。

用于PC应用程序的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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM