SpringBoot(maven)项目接入Kotlin与Java混合开发

本文介绍了如何在已有的SpringBoot Maven项目中无缝接入Kotlin进行混合开发,同时保持Java代码不受影响。主要内容包括在pom.xml中配置Kotlin版本、添加相关依赖、设置Maven插件进行混合编译,以及演示了Kotlin的简单测试和运行。通过这些步骤,开发者可以顺利地将Kotlin集成到现有Java项目中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

        在一个原有的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")
}

 运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值