我想以与IDE无关的方式在gradle中设置java语言级别。
根级别的 sourceCompatibility = 1.x
在Gradle 2.21中似乎已弃用。
(编辑:或是吗?IntelliJ给我一个常规的检查错误)
所以我找到了这个,这有效。
idea {
project {
languageLevel = '1.7'
}
}
但由于idea { }
结构......
有没有办法以IDE无关的方式做到这一点?
我希望我的gradle构建脚本能够在任何 IDE(无论是IntelliJ IDEA还是Eclipse)或Jenkins(或其他)上运行。
答案 0 :(得分:7)
显示了为CLI构建执行此操作的方法。但是我不确定每个IDE是否会选择它。
allprojects {
tasks.withType(JavaCompile) {
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
}
}
答案 1 :(得分:3)
如果在命令行中使用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的想法插件的错误。见https://issues.gradle.org/browse/GRADLE-2198
目前,我有时需要在上面的对话框中更改语言级别。
答案 2 :(得分:2)
如果它们是在compileJava
下定义的,则不会收到警告,IntelliJ和gradle都会尊重它。
compileJava {
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
}
与任何gradle文件更改一样,您需要同步以使IntelliJ获取更改。
答案 3 :(得分:1)
在app模块内build.gradle的android
闭包内:
android {
compileSdkVersion 27
buildToolsVersion "26.0.2"
// etc
// other things
// add this
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
答案 4 :(得分:1)
将其添加为答案,因为我从评论中得到了答案:
而不是在compileJava任务中具有sourceCompatibility / targetCompatibility,请使用:
project.sourceCompatibility = '1.7'
project.targetCompatibility = '1.7'
在相关项目的配置中
答案 5 :(得分:1)
我在Gradle 6.1上测试了以下内容,并且可以正常工作:
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}