如何在Gradle中设置语言级别?(因此它与IDE无关)

vik*_*eve 10 java intellij-idea gradle

我想以IDE不可知的方式在gradle中设置java语言级别.

sourceCompatibility = 1.x 在Gradle 2.21中,根级别似乎已弃用.

(编辑:或者是它?IntelliJ给我一个常规的检查错误)

所以我发现了这个,它有效.

idea {
    project {
        languageLevel = '1.7'
    }
}
Run Code Online (Sandbox Code Playgroud)

但是由于idea { }结构的原因,这里的配置是否与IntelliJ IDEA相关联?

有没有办法以IDE不可知的方式做到这一点?

我希望我的gradle构建脚本可以在任何 IDE(无论是IntelliJ IDEA还是Eclipse)或Jenkins(或其他)上运行.

cmc*_*nty 8

显示了为CLI构建执行此操作的方法.但是我不确定每个IDE是否都会选择它.

allprojects {
    tasks.withType(JavaCompile) {
        sourceCompatibility = '1.7'
        targetCompatibility = '1.7'
    } 
}
Run Code Online (Sandbox Code Playgroud)


ose*_*003 5

如果您在命令行中使用 Gradle,则语言级别可以按照build.gradle文件中指定的方式正常工作。

但是当将 Gradle java 项目导入 IntelliJ IDEA 时,Gradle 的插件负责生成 IDEA 的项目设置文件,

不幸的是,插件不尊重 build.gradle 的 sourceCompatibility/targetCompatibility 属性,而是使用 IDEA 的设置: File -> Other Settings -> Default Project Structure -> Project Language Level -> 6 (By default). 在此处输入图片说明

所以,我认为这是gradle的idea插件的一个错误。见https://issues.gradle.org/browse/GRADLE-2198

目前,我有时必须在上面的对话框中更改语言级别。


小智 5

添加此作为答案,因为我是从评论中得到的:

不要在 compileJava 任务中使用 sourceCompatibility/targetCompatibility,而是使用:

project.sourceCompatibility = '1.7'
project.targetCompatibility = '1.7'
Run Code Online (Sandbox Code Playgroud)

在相关项目的配置中