前言
在一个原有的SpringBoot(maven工程)的Java(1.8)项目上接入Kotlin进行混合开发,但并不想影响或转化到原有的Java代码,需要对接入的Kotlin进行一定的配置
本文章内容来自网络汇总并通过自行整理(在此感谢各位各位大佬的支持)
配置pom.xml文件
声明版本
<properties>
<!-- 设置java版本 -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 设置kotlin版本 -->
<kotlin.version>1.4.21</kotlin.version>
<!-- 启用kotlin增量编译 -->
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
</properties>
引入Kotlin相关依赖
<dependencies>
<!-- kotlin -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
</dependency>
</dependencies>
增加plugin 插件进行混合编译
<build>
<finalName>项目名称</finalName>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<configuration>
<jvmTarget>1.8</jvmTarget>
<args>
<arg>-Xjsr305=strict</arg>
</args>
<compilerPlugins>
<!-- Spring使用动态代理需要所有Bean可继承,该插件为所有Bean添加open关键字 -->
<plugin>spring</plugin>
<!-- 该插件为jpa实体类解决没有无参构造器的问题 -->
<!-- <plugin>jpa</plugin> -->
<plugin>no-arg</plugin>
</compilerPlugins>
<pluginOptions>
<!-- 有些持久层框架需要实体类需要无参构造器,使用该注解标注解决kotlin data class没有无参构造器的问题 -->
<option>no-arg:annotation=com.example.annotations.NoArg</option>
</pluginOptions>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-noarg</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- <version>若插件爆红,添加对应版本即可解决</version> -->
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
<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>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置项目结构
创建测试
编写main方法
package com.aa.kotlin.demo
fun main(args: Array<String>) {
println("test print out")
}