文章目录

  • 前言
  • 使用IntelliJ IDEA创建单模块工程
  • 搭建多模块环境
  • 创建主模块
  • 创建库模块
  • 部署
  • 参考文档
  • 联系作者


前言

环境说明:

工具

版本

IntelliJ IDEA

Ultimate 2021.1

SpringBoot

2.5.0

Kotlin

1.5.10

Gradle

7.0.2

不同版本之间可能会有差异, 尤其是Gradle的版本, 会影响kts编译脚本.

注意: SpringBoot Gradle插件最低需要Gradle版本6.8.x.
你可以在这里看到声明

使用IntelliJ IDEA创建单模块工程

先使用IDEA工具创建一个普通的SpringBoot+Gradle+Kotlin的工程:

Android kotlin封装参数为方法得方法_kotlin

Android kotlin封装参数为方法得方法_gradle_02

按照图中步骤, 很简单就搭建好了SpringBoot的开发环境.

Android kotlin封装参数为方法得方法_kotlin_03

图中文件名的颜色是git管理插件导致的, 与本文内容无关紧要.

直接运行, 就可以启动服务了, 默认端口是8080

浏览器打开: http://localhost:8080/

Android kotlin封装参数为方法得方法_multi-module_04


到这里, 单模块的SpringBoot+Gradle+Kotlin工程就搭建好了, 接下来在此工程上搭建多模块的开发环境.

搭建多模块环境

创建主模块

新建主模块文件夹, 比如app , 然后将src文件夹移动到app文件夹内:

Android kotlin封装参数为方法得方法_multi-module_05


app文件夹中创建build.gradle.kts脚本编译文件, 内容如下:

group = "com.angcyo.spring"
version = "0.0.1"

plugins {
    //模块需要其他插件, 在这里写
}

dependencies {
    //模块需要其他第三方库, 在这里写
}

修改根目录中的settings.gradle.kts, 加入include语句:

rootProject.name = "SpringGradleKotlinDemo"
include("app") //这一行

修改根目录中的build.gradle.kts, 如下:

plugins {
    id("org.springframework.boot") version "2.5.0"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    kotlin("jvm") version "1.5.10"
    kotlin("plugin.spring") version "1.5.10"
}

repositories {
    mavenCentral()
}

//注意以下内容
subprojects {
    apply(plugin = "org.springframework.boot")
    apply(plugin = "io.spring.dependency-management")
    apply(plugin = "org.jetbrains.kotlin.plugin.spring")
    apply(plugin = "org.jetbrains.kotlin.jvm") //kotlin插件
    apply(plugin = "org.jetbrains.kotlin.plugin.allopen") //移除kotlin默认生成类中的final修饰

    repositories {
        mavenCentral()
    }

    java.sourceCompatibility = JavaVersion.VERSION_1_8

    configurations {
        compileOnly {
            extendsFrom(configurations.annotationProcessor.get())
        }
    }

    dependencies {
        implementation("org.springframework.boot:spring-boot-starter-web")
        implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
        implementation("org.jetbrains.kotlin:kotlin-reflect")
        implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
        compileOnly("org.projectlombok:lombok")
        developmentOnly("org.springframework.boot:spring-boot-devtools")
        annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
        annotationProcessor("org.projectlombok:lombok")
        testImplementation("org.springframework.boot:spring-boot-starter-test")
    }

    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        kotlinOptions {
            freeCompilerArgs = listOf("-Xjsr305=strict")
            jvmTarget = "1.8"
        }
    }

    tasks.withType<Test> {
        useJUnitPlatform()
    }

}

修改了kts脚本文件之后, 都需要重新加载一下, 才能生效, 如下图:

Android kotlin封装参数为方法得方法_multi-module_06


重新加载之后, 当你的app文件夹的带图标之后, 就说明配置成功了.

Android kotlin封装参数为方法得方法_kotlin_07

创建库模块

新建一个文件夹用来存放公共库, 比如library文件夹, 在新的文件夹中创建公共模块, 比如util.

Android kotlin封装参数为方法得方法_kotlin_08


同时修改根目录中的settings.gradle.kts, 加入include语句:

rootProject.name = "SpringGradleKotlinDemo"
include("app") //这一行
include(":library:util") //这一行

需要重新加载脚本, 才能生效哦!

之后在app模块中的build.gradle.kts文件中引入util模块的依赖:

group = "com.angcyo.spring"
version = "0.0.1"

plugins {
    //模块需要其他插件, 在这里写
}

dependencies {
    //模块需要其他第三方库, 在这里写

    implementation(project(":library:util")) //注意这里
}

这样在app模块中, 就可以使用util模块的代码了.

部署

生成jar包, 只需要运行gradlew :app:bootJartask即可, 也可以双击菜单如下:

Android kotlin封装参数为方法得方法_SpringBoot_09

生成的jar包在这个路径app->build->libs下:

Android kotlin封装参数为方法得方法_gradle_10