Gradle
这里笔者使用的是 Spring Boot + Jdk 15。
...
apply plugin: 'kotlin'
apply plugin: 'kotlin-jpa'
apply plugin: 'kotlin-spring'
...
compileKotlin { kotlinOptions.jvmTarget = "15" }
compileTestKotlin { kotlinOptions.jvmTarget = "15" }
...
Maven
为了使构建更快,可以为 Maven 启用增量编译(从 Kotlin 1.1.2 起支持)。 为了做到这一点,需要定义 kotlin.compiler.incremental
属性,或者使用 -Dkotlin.compiler.incremental=true
选项运行构建:
<properties>
<kotlin.version>1.4.31</kotlin.version>
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
</properties>
添加 kotlin 依赖项,reflect 会自动依赖 stdlib,Jdk8 环境需手动声明为 -stdlib-jdk8。
关于 kotlin-stdlib-jre8 与 kotlin-stdlib-jdk8,重点:为了与 Java 9 完全兼容,并支持 Java 9 的禁止拆分程序包(大概就这意思吧)功能,引入了新的 工件 :kotlin-stdlib-jdk7 和 kotlin-stdlib-jdk8 以替代旧的 kotlin-stdlib-jre7 及 kotlin-stdlib-jre8。
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
要混合编译代码,必须在 Java 编译器之前调用 Kotlin 编译器。 按照 maven 的方式,这意味着,要确保 pom.xml 文件中的 kotlin-maven-plugin
插件位于 maven-compiler-plugin
之前:
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmTarget>1.8</jvmTarget>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<!-- 替换会被 maven 特别处理的 default-compile -->
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<!-- 替换会被 maven 特别处理的 default-testCompile -->
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>java-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>java-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
<extensions>
<extension>...</extension>
</extensions>
</build>
参考资料:
https://developer.aliyun.com/article/247901
https://blog.csdn.net/soslinken/article/details/102775421
https://www.kotlincn.net/docs/reference/using-maven.html