How specify the required Java version in a Gradle build

后端 未结 4 912
长发绾君心
长发绾君心 2021-01-07 19:06

I would like to set in a Gradle build file the required Java version e.g. 7 or 8 without having to specify the actual path to a local JDK installation.

Is

相关标签:
4条回答
  • 2021-01-07 19:14

    You can try this:

    java {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    
    tasks.withType<JavaCompile> {
        options.compilerArgs.addAll(arrayOf("--release", "8"))
    }
    

    This will also give JDK compliance to you. You can also see the following related issues:

    • Gradle: [Java 9] Add convenience method for -release compiler argument
    • Eclipse Plug-ins for Gradle: JDK API compatibility should match the sourceCompatibility option.
    0 讨论(0)
  • 2021-01-07 19:27

    TLDR; Thanks @franklin-yu "targetCompatibility = '1.7' -> your user can compile with 8 and run with 7."

    See Gradle, "sourceCompatibility" vs "targetCompatibility"?

    targetCompatibility = '1.7' does the trick for e.g. Java 7

    Use sourceCompatibility = '1.7' for the language level

    0 讨论(0)
  • 2021-01-07 19:34

    In the build.gradle file, add the following two lines:

    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'
    

    The targetCompatibility defines the generated JVM bytecode version (this is the version that users of your application need). The sourceCompatibility defines which source code constructs are allowed (e.g. you need Java 1.8 or higher to use lambda expressions in source code).

    Source

    0 讨论(0)
  • 2021-01-07 19:36

    This feature was just added to Gradle 6.7 as Java toolchains:

    // build.gradle.kts
    
    plugins {
        id("java-library") // or id("application")
    }
    
    java {
        toolchain {
            languageVersion.set(JavaLanguageVersion.of(11))
        }
    }
    

    With this in place Gradle will automatically download & use the appropriate JDK (using AdoptOpenJDK by default) for the specified Java version.

    0 讨论(0)
提交回复
热议问题