Ktor + Gradleでwebアプリケーションの雛形を表示するまで
Kotlin製のWeb framework「Ktor」https://ktor.io/
ブラウザでHello, Worldを表示するまでを試してみます。
Gradle
IntelliJ IDEAでの実行が多いと思いますが、Gradleのみでのビルド&実行を試してみます。
まずはKotlinアプリケーションの雛形を作成。
gradleでKotlinプロジェクトの雛形を生成・ビルド
プロジェクト名は「ktor_sample」としました。
$ mkdir ktor_sample
$ cd ktor_sample
$ gradle init --type kotlin-application
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Kotlin) [1..2] 1
Project name (default: ktor_sample): (そのままエンター)
Source package (default: ktor_sample): (そのままエンター)
BUILD SUCCESSFUL in 12s
2 actionable tasks: 2 executed
これでKotlinの雛形が作成されます。
build.gradle
自動生成されたbuild.gradleを編集します。
編集前の内容は以下の通り。
※コメントは削除してあります。
- plugins {
- id 'org.jetbrains.kotlin.jvm' version '1.3.72'
- id 'application'
- }
- repositories {
- jcenter()
- }
- dependencies {
- implementation platform('org.jetbrains.kotlin:kotlin-bom')
- implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
- testImplementation 'org.jetbrains.kotlin:kotlin-test'
- testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
- }
- application {
- mainClassName = 'ktor_sample.AppKt'
- }
Setting up a Gradle Build
KtorでJSONを返すまで
こちらを参考に、Ktorと内蔵webサーバーの設定を追記しました。
- // 使用するkotlinとktorのバージョン情報
- buildscript {
- ext.kotlin_version = '1.4.0'
- ext.ktor_version = '1.4.0'
- }
- plugins {
- // 使用するkotlinは変数化したバージョン情報を指定
- id 'org.jetbrains.kotlin.jvm' version "$kotlin_version"
- id 'application'
- }
- repositories {
- jcenter()
- }
- dependencies {
- implementation platform('org.jetbrains.kotlin:kotlin-bom')
- implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
- testImplementation 'org.jetbrains.kotlin:kotlin-test'
- testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
- // Ktorの設定を追加
- compile "io.ktor:ktor-server-netty:$ktor_version"
- // Loggerの設定を追加
- compile "ch.qos.logback:logback-classic:1.2.3"
- }
- application {
- mainClassName = 'ktor_sample.AppKt'
- }
App.kt
雛形として生成されたsrc/main/kotlin/ktor_sample/App.ktを編集します。
編集前のデフォルト
- /*
- * This Kotlin source file was generated by the Gradle 'init' task.
- */
- package ktor_sample
- class App {
- val greeting: String
- get() {
- return "Hello world."
- }
- }
- fun main(args: Array<String>) {
- println(App().greeting)
- }
編集後のApp.kt
- package ktor_sample
- import io.ktor.application.*
- import io.ktor.http.*
- import io.ktor.response.*
- import io.ktor.routing.*
- import io.ktor.server.engine.*
- import io.ktor.server.netty.*
- fun main(args: Array<String>) {
- embeddedServer(Netty, 8080) {
- routing {
- get("/") {
- call.respondText("Hello, World!", ContentType.Text.Html)
- }
- }
- }.start(wait = true)
- }
編集できたら実行します。
$ gradle run
...
<==========---> 80% EXECUTING [16s]
> :run
「EXECUTING」の表示で停止します。
これでwebサーバーが起動している状態となるので、ブラウザでhttp://localhost:8080を表示。

ちゃんと実行できたようです。
【参考URL】
Setting up a Gradle Build
KtorでJSONを返すまで
コメント