【SpringBoot】使用Gradle Kotlin DSL构建并运行Hello World

添加更多内容

目前,使用Spring Initializr可以生成Kotlin DSL的Spring Boot项目,如果要开始一个新项目,建议使用它来生成。

做的事情

参照以下资料,使用Kotlin-DSL运行SpringBoot。
尝试迁移到build.gradle.kts – DroidKaigi 2019

在这篇文章中使用的存储库如下:
k163377/kts-test:使用Kotlin DSL的Spring Boot

思考

如果你在谷歌上搜索,意外地可能会找到一些信息,所以只要查一下,就可以用充分的努力解决各种问题。

步骤

我们将按照以下步骤进行。

    1. 使用Spring Initializr进行初始化

 

    1. 修改settings.gradle文件

 

    1. 修改build.gradle文件

 

    添加控制器并输出“Hello World”

我在IntelliJ IDEA 2018.3.2(Ultimate Edition)环境下完成了。

通过Spring Initializr进行初始化。

由于有许多其他解释性文章存在,所以我们不做。这次我们选择了”使用Kotlin和Spring Boot 2.1.3生成Gradle项目”。

更改 settings.gradle

根据5:30左右的会话进行参考,我们将对settings.gradle进行修改。

pluginManagement {
    repositories {
        gradlePluginPortal()
    }
}
rootProject.name = 'kts-test'

只需将 “を” 改为 “に”,并将文件名改为 settings.gradle.kts,完成了。

pluginManagement {
    repositories {
        gradlePluginPortal()
    }
}
rootProject.name = "kts-test"

修改 build.gradle

由于动力不足,我无法提供详细资料(十分抱歉)。

根据大约在11:36的会话参考,已经进行了`'([^’]+)’→”$1″`的替换操作。接下来是全力以赴进行了改写。

plugins {
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'org.jetbrains.kotlin.jvm' version '1.2.71'
    id 'org.jetbrains.kotlin.plugin.spring' version '1.2.71'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.wrongwrong'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.jetbrains.kotlin:kotlin-reflect'
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

compileKotlin {
    kotlinOptions {
        freeCompilerArgs = ['-Xjsr305=strict']
        jvmTarget = '1.8'
    }
}

compileTestKotlin {
    kotlinOptions {
        freeCompilerArgs = ['-Xjsr305=strict']
        jvmTarget = '1.8'
    }
}
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "2.1.3.RELEASE"
    id("org.jetbrains.kotlin.jvm") version "1.2.71"
    id("org.jetbrains.kotlin.plugin.spring") version "1.2.71"
}

apply(plugin = "io.spring.dependency-management")

group = "com.wrongwrong"
version = "0.0.1-SNAPSHOT"
val sourceCompatibility = "1.8"

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

// KotlinCompileに関しては2通りの書き方をしているが、統一性の観点から恐らく下に合わせる方がよい
tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "1.8"
    }
}

val compileTestKotlin: KotlinCompile by tasks
compileTestKotlin.kotlinOptions {
    freeCompilerArgs = listOf("-Xjsr305=strict")
    jvmTarget = "1.8"
}

添加控制器并打开哈罗哇

我将重复使用我之前写的文章中的控制器。

import org.springframework.ui.Model
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("my")
class MyController{
    @GetMapping
    fun myGetTest(model: Model): String{
        return "hello from spring boot"
    }
}

如果缺少以下两个依赖项,则无法编译通过或者会产生警告,所以需要添加。

implementation(group = "org.springframework.boot", name = "spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")

当你运行它并访问http://localhost:8080/my,你就可以通过这个链接打招呼了。

广告
将在 10 秒后关闭
bannerAds