我正在使用IntelliJ IDEA中的Scala项目,并使用Gradle进行配置和依赖关系管理。
每次我添加一些新的依赖项并将其同步到IDEA时,它会将其他编译器选项重写为-target:jvm-1.8
,当我尝试使用IDEA时会导致错误:< / p>
Error:scalac: 'jvm-1.8' is not a valid choice for '-target'
Error:scalac: bad option: '-target:jvm-1.8'
所以我需要手动修复它。
我可以在 build.gradle 中设置目标JVM版本或编译器参数(还需要-feature
选项),以便从那里获取它们吗?
谢谢!
答案 0 :(得分:6)
您可以将sourceCompatibility = '1.7'
添加到您的gradle构建文件中,然后刷新,项目将正常构建。请注意,这样您就不能在代码中使用Java 8源代码,这是一个临时的黑客攻击,直到Gradleware
或JetBrains
解决问题。
您还可以篡改运行gradle idea
时生成的IDEA项目XML。这将为您提供包含其他标志的选项。您可以通过打开项目.iml
文件并确定需要更改的内容来检查当前的xml,然后使用以下代码:
apply plugin: 'idea'
idea {
module {
iml {
withXml {
def node = it.asNode()
//modify xml
}
}
}
}
不会推荐它,因为你必须坚持使用gradle idea
并且不能直接从IDEA直接导入,但目前没有更好的方法来获得额外的标志。文档 - idea plugin和idea module
答案 1 :(得分:0)
我多年来一直在寻找解决方案,终于找到了 - 分享给其他读这篇文章的人。
取自:https://devnet.jetbrains.com/message/5523902
subprojects {
tasks.withType(ScalaCompile) {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
}