如何在Gradle构建中指定所需的Java版本

时间:2015-01-09 13:28:07

标签: java gradle

我想在Gradle构建文件中设置所需的Java版本,例如7或8 没有必须指定本地JDK安装的实际路径。

这可能吗?

5 个答案:

答案 0 :(得分:15)

TLDR; 谢谢@ franklin-yu“targetCompatibility ='1.7' - >您的用户可以使用8编译并使用7运行。”

请参阅Gradle, "sourceCompatibility" vs "targetCompatibility"?

targetCompatibility = '1.7'可以解决这个问题。 Java 7

使用sourceCompatibility = '1.7'作为语言级别

答案 1 :(得分:3)

此功能是just addedJava toolchains到Gradle 6.7:

// build.gradle.kts

plugins {
    id("java-library") // or id("application")
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(11))
    }
}

为此,Gradle会自动为指定的Java版本下载并使用适当的JDK(默认情况下使用AdoptOpenJDK)。

答案 2 :(得分:1)

您可以尝试以下方法:

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

tasks.withType<JavaCompile> {
    options.compilerArgs.addAll(arrayOf("--release", "8"))
}

这还将使您符合JDK。您还可以看到以下相关问题:

答案 3 :(得分:0)

build.gradle文件中,添加以下两行:

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

targetCompatibility定义了生成的JVM字节码版本(这是应用程序用户需要的版本)。 sourceCompatibility定义了允许使用哪些源代码结构(例如,您需要Java 1.8或更高版本才能在源代码中使用lambda表达式)。

Source

答案 4 :(得分:0)

基于 CletusW 的回答。在windows 10下,好像不会自动选择新安装的Java,所以手动检查一下。

apply plugin: 'java'
java.toolchain.languageVersion = JavaLanguageVersion.of(15)  // auto install



// check JDK version
if (!System.getProperty("java.home").contains(java.toolchain.languageVersion.get().toString())) {
    def msg = ('JDK in this project: ' + System.getProperty('java.home') + '\n' +
            'In this project, you should use JDK-' + java.toolchain.languageVersion.get())
    throw new GradleException(msg)
}