塩焼きブログ

塩焼きに関しての研究内容を公開しています

Kotlinでktorを立ち上げる

すぐ動かすってのが難しかったので結果的に書いたものをまとめます。

gradle

ここを参考にbuild.gradleを書く。

group 'hoge'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'application'

mainClassName = "hoge.MainKt"

buildscript {
    ext.ktor_version = '0.9.1'
    ext.kotlin_version = '1.2.31'
    repositories { mavenCentral() }
    dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
}

sourceCompatibility = 1.8
compileKotlin { kotlinOptions.jvmTarget = "1.8" }
compileTestKotlin { kotlinOptions.jvmTarget = "1.8" }

repositories {
    jcenter()
    mavenLocal()
    mavenCentral()
    maven { url "https://dl.bintray.com/kotlin/ktor" }
}

kotlin {
    experimental {
        coroutines "enable"
    }
}

dependencies {
    compile group: 'junit', name: 'junit', version: '4.12'
    compile "io.ktor:ktor-server-core:$ktor_version"
    compile "io.ktor:ktor-server-netty:$ktor_version"
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

jar {
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    manifest.mainAttributes("Main-Class" : mainClassName)
}

Main.kt

ここを参考にhello worldする。

import io.ktor.application.call
import io.ktor.http.ContentType
import io.ktor.response.respondText
import io.ktor.routing.get
import io.ktor.routing.routing
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty


fun main(args: Array<String>) {
    embeddedServer(Netty, 8080) {
        routing {
            get("/") {
                call.respondText("Hello, world!", ContentType.Text.Html)
            }
        }
    }.start(wait = true)
}

ブラウザでlocalhost:8080にアクセスすれば動く。