scala - 从 Gradle 同步时,IntelliJ 会覆盖 Scala 附加编译器选项

标签 scala intellij-idea gradle

我正在 IntelliJ IDEA 中处理 Scala 项目,并使用 Gradle 进行配置和依赖项管理。

每次我添加一些新的依赖并将其同步到 IDEA 时,它都会重写 其他编译器选项 进入 -target:jvm-1.8 ,当我尝试使用 IDEA 制作时会导致错误的原因:

Error:scalac: 'jvm-1.8' is not a valid choice for '-target'
Error:scalac: bad option: '-target:jvm-1.8'

所以我需要手动修复它。

我可以在我的 中设置目标 JVM 版本或编译器参数(还需要 -feature 选项)吗? build.gradle ,所以它会从那里带走它们?

谢谢!

最佳答案

您可以添加 sourceCompatibility = '1.7'到您的 gradle 构建文件然后刷新,项目将正常构建。请注意,这样你的代码中就不能有 Java 8 源代码,这是一个临时的 hack,直到 GradlewareJetBrains解决问题。

您还可以篡改运行时生成的 IDEA 项目 XML gradle idea .这将使您可以选择包含其他标志。您可以通过打开项目 .iml 来检查您当前的 xml。文件并确定需要更改的内容,然后使用以下代码:

apply plugin: 'idea'

idea {
  module {
    iml {      
      withXml {
        def node = it.asNode()
        //modify xml
      }
    }
  }
}

不过不推荐它,因为你必须坚持使用 gradle idea并且无法直接从 IDEA 正确导入,但目前没有更好的方法来添加额外的标志。文档 - idea pluginidea module

关于scala - 从 Gradle 同步时,IntelliJ 会覆盖 Scala 附加编译器选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286749/

相关文章:

spring - @Value 没有被注入(inject)到其他包中

android - "failure in processEncodedAnnotation"在 Android 上使用 Jackson 和 ScalaModule

scala - 访问元组的更好方法(匹配案例除外)

java - 带有 JDK10 SDK 的 IntelliJ 不编译带有 1.8 目标的 Maven 项目

java - 附近的 Hamcrest 无法使用

android - 更新Android Studio 3.0和Gradle版本4.1后发生SweetAlertDialog错误

java - 使用 scala 整理日志记录?

scala - 如何在 DataFrames 中将列类型从 String 更改为 Date?

java - 如何编写一个调用另外两个任务的 gradle 任务?

google-chrome - 如何在 flatpak google chrome 中从 intellij 打开浏览器预览