You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ子模块目标平台判定规则及Maven配置Kotlin JVM版本方法

问题解答

1. Kotlin目标平台值如何由pom.xml决定?

Kotlin的编译目标平台由kotlin-maven-plugin的专属配置控制,和Maven原生的maven.compiler.source/maven.compiler.target参数相互独立:

  • 若未在pom中显式配置Kotlin插件的jvmTarget参数,插件会使用自身内置的默认值(旧版本插件默认JVM目标为1.8)。
  • 根pom中设置的Java编译参数仅作用于Java代码编译,不会自动同步给Kotlin插件,这就是子模块Kotlin目标平台显示1.8的核心原因。

2. 配置Maven让子模块Kotlin使用指定JVM版本

推荐通过根pom的pluginManagement统一配置Kotlin插件,让所有子模块自动继承配置,步骤如下:

步骤1:在根pom中统一配置kotlin-maven-plugin

在根pom的<build>节点下添加pluginManagement,指定Kotlin插件的JVM目标版本为11:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-maven-plugin</artifactId>
        <!-- 指定支持JDK11的插件版本,建议用最新稳定版 -->
        <version>1.9.20</version>
        <executions>
          <execution>
            <id>compile</id>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <jvmTarget>11</jvmTarget>
            </configuration>
          </execution>
          <execution>
            <id>test-compile</id>
            <goals>
              <goal>test-compile</goal>
            </goals>
            <configuration>
              <jvmTarget>11</jvmTarget>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

步骤2:子模块中引用插件(无需重复配置)

在每个子模块的<build>节点下添加Kotlin插件引用即可,会自动继承根pom的配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

可选方案:用属性统一管理版本

也可以在根pom的<properties>中定义全局属性,再在插件中引用,方便后续统一修改:
根pom的properties:

<properties>
  <maven.compiler.source>11</maven.compiler.source>
  <maven.compiler.target>11</maven.compiler.target>
  <kotlin.jvmTarget>11</kotlin.jvmTarget>
  <kotlin.plugin.version>1.9.20</kotlin.plugin.version>
</properties>

然后在根pom的pluginManagement中引用属性:

<configuration>
  <jvmTarget>${kotlin.jvmTarget}</jvmTarget>
</configuration>
<version>${kotlin.plugin.version}</version>

配置完成后,在IntelliJ中执行Maven重新导入,子模块的Kotlin目标平台就会自动同步为Java11,且不会再恢复为1.8。


内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:18:21