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

时间:2018-10-20 19:53:24

标签: java maven gradle intellij-idea kotlin

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

我实际上尝试了从2个最佳答案到same problem(虽然来自Java世界)的所有内容,但对我没有任何帮助。我也迁移到了Gradle,希望能解决这个问题,但这也无济于事。除了提到的SO问题之外,我还浏览了很多论坛,其建议始终与提到的SO答案相同。

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

2 个答案:

答案 0 :(得分:2)

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

这意味着解决方案是手动设置kotlin插件中的版本,但首先请确保您已完成question dealing with the same problem but in Java的可接受答案中列出的所有操作。

现在,假设您使用的是 Gradle (我在迁移后一直使用),则应按照说明将kotlin插件包括在您的 build.gradle 中在kotlin's docu on how to use it with Gradle中。但是,这还不够,因此您必须向下滚动该文档并找到kotlin compile options,尤其是jvmTarget。在那里,您会发现版本1.6确实是默认版本,您可以在 build.gradle

中继续配置编译任务。

compileKotlin { kotlinOptions.jvmTarget = 1.8 }

Voila,现在每次重新导入都保持在1.8。如果您使用的是Maven,那么您也可以使用一个插件(只需在Google上进行搜索),尽管我没有尝试过,但我肯定会有相同的jvmTarget设置供您使用。

答案 1 :(得分:0)

解决了:

  compileKotlin {
    kotlinOptions.jvmTarget = 1.8
  }

如果这对您不起作用,请运行“ compileKotlin”任务并检查输出。可能在构建脚本中存在其他错误,导致无法应用此选项。