Idea 不断将 Kotlin 的编译目标从 1.8 切换到 1.6

Dan*_*cák 7 java intellij-idea gradle maven kotlin

我正在使用 Intellij Idea 基于 Maven 和 JDK 8 开发一个新的 Kotlin 项目。一切都很好,除了在每次 Maven 重新导入之后,由于某种原因编译目标从 1.8 切换到 1.6。

我真的尝试了从 2 个最佳答案到同一问题的所有方法(尽管来自 Java 世界),但没有任何效果对我有用。我也迁移到 Gradle,希望能克服这个问题,但这也无济于事。除了提到的 SO 问题,我浏览了大量论坛,建议始终与提到的 SO 答案相同。

那么问题来了,如何防止Idea在重新导入后切换目标Java版本?

Dan*_*cák 8

因此,经过多次尝试和错误尝试后,我发现 Idea 选择了 1.6 版,因为这是 Kotlin 的默认 JVM 目标版本,而且我没有在pom.xmlbuild.gradle 中的任何地方设置该 1.8 版。如果没有在那里定义这个版本,Idea 显然倾向于忽略项目设置并坚持默认值。

这意味着解决方案是手动设置 kotlin 插件中的版本,但首先确保您已完成在处理相同问题但在 Java 中问题的已接受答案中列出的所有内容。

现在,假设您正在使用Gradle(我在迁移后一直使用它),您应该按照说明将 kotlin 插件包含在您的build.gradle 中,kotlin 的文档中关于如何将其与 Gradle 一起使用的说明。但这还不够,因此您必须在该文档中向下滚动并找到kotlin 编译选项jvmTarget特别是。在那里你会发现 1.6 版本确实是默认的,你可以继续在build.gradle 中配置你的编译任务:

compileKotlin { kotlinOptions.jvmTarget = 1.8 }

瞧,现在每次重新导入都坚持 1.8。如果你使用 Maven,还有一个插件你可以使用(只是谷歌它),我相信你可以使用相同的jvmTarget设置,尽管我还没有尝试过。