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版本?
因此,经过多次尝试和错误尝试后,我发现 Idea 选择了 1.6 版,因为这是 Kotlin 的默认 JVM 目标版本,而且我没有在pom.xml或build.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设置,尽管我还没有尝试过。