Gradle IntelliJ 中的刷新更改了模块的语言级别

Gradle refresh in IntelliJ changes language level of modules

我有一个 Gradle 项目,它由一个 Android 库模块和一个普通的旧 Java 模块组成。 (Android 库模块依赖于普通 Java 模块。)

在 Android 库模块的 build.gradle 文件中,我有这个:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

在普通旧 Java 模块的 build.gradle 文件中,我有这个:

compileJava {
    sourceCompatibility = "1.8"
    targetCompatibility = "1.8"
}

当我在 IntelliJ IDEA 15 中点击 Gradle 刷新按钮时,Android 模块的语言级别设置为 Java 8(如我所料)但是Java 模块的语言级别设置为 Java 1.6。 为什么会这样,IntelliJ 有没有办法在刷新时将 Java 模块的语言级别设置为 Java 8?

如果您使用新的 Jack 编译器或 GradleRetrolambda 插件,您只能使用 JavaVersion.VERSION_1_8

所以你应该使用:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

就 Intellij/Android Studio 语言设置而言:

  1. 文件 -> 项目结构:

  1. 您应该相应地设置项目语言设置: