Java 如何在Gradle中设置语言级别?(因此是IDE不可知论)
我想以一种与IDE无关的方式在gradle中设置java语言级别 在Gradle 2.21中,根级别的Java 如何在Gradle中设置语言级别?(因此是IDE不可知论),java,intellij-idea,gradle,Java,Intellij Idea,Gradle,我想以一种与IDE无关的方式在gradle中设置java语言级别 在Gradle 2.21中,根级别的sourceCompatibility=1.x似乎已被弃用 (编辑:是吗?IntelliJ给了我一个groovy检查错误) 所以我找到了这个,很有效 idea { project { languageLevel = '1.7' } } 但是由于IDEA{}结构,这里的配置不是将gradle与IntelliJ IDEA联系起来了吗 有没有一种方法可以以IDE不可知
sourceCompatibility=1.x
似乎已被弃用
(编辑:是吗?IntelliJ给了我一个groovy检查错误)
所以我找到了这个,很有效
idea {
project {
languageLevel = '1.7'
}
}
但是由于IDEA{}
结构,这里的配置不是将gradle与IntelliJ IDEA联系起来了吗
有没有一种方法可以以IDE不可知的方式实现这一点
我希望我的gradle构建脚本可以在任何IDE(IntelliJ IDEA或Eclipse)或Jenkins(或其他任何版本)上运行。显示了对CLI构建执行此操作的方法。然而,我不确定是否每个IDE都会接受这一点
allprojects {
tasks.withType(JavaCompile) {
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
}
}
如果在命令行中使用Gradle,则语言级别将按照
build.Gradle
文件中的指定工作
但当将Gradle java项目导入IntelliJ IDEA时,Gradle的插件负责生成IDEA的项目设置文件
不幸的是,该插件不尊重build.gradle的sourceCompatibility/targetCompatibility属性,
相反,它使用IDEA的设置:
文件->其他设置->默认项目结构->项目语言级别->6(默认)。
所以,我认为这是gradle想法插件的一个缺陷。看
目前,我有时不得不在上面的对话框中更改语言级别。如果它们是在
compileJava
下定义的,您将不会得到警告,IntelliJ和gradle都尊重它
compileJava {
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
}
与任何gradle文件更改一样,您将需要同步以获取IntelliJ以获取更改
在应用程序模块内的
android
关闭build.gradle:
android {
compileSdkVersion 27
buildToolsVersion "26.0.2"
// etc
// other things
// add this
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
添加此作为答案,因为我是从评论中获得的: 不要在compileJava任务中使用sourceCompatibility/targetCompatibility,请使用:
project.sourceCompatibility = '1.7'
project.targetCompatibility = '1.7'
在相关项目的配置中我在Gradle 6.1上测试了以下内容,它可以正常工作:
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
languageLevel
应默认为。您确定它已被弃用吗?使用gradle进行生成不会使您绑定到使用ide。您可以使用gradle包装器'gradlew'并在cli上构建。然后,开发人员有责任与他们的特定项目配置集成ide@lifus好的,谢谢,sourcecompatibility
确实有效。奇怪的是,我从sourceCompatibility=1.7
得到了一个Groovy检查错误:“未使用赋值”。是否可以编写project.sourceCompatibility=1.7
?看起来像是误报<代码>项目。sourceCompatibility在最外层相当于sourceCompatibility
。这在设置中对我有效:Gradle 6.2.2+Kotlin 1.3项目+IntelliJ 2020.1