今回は、Kotlin KtorでAuto Reload(ホットリロード)をできるようにする設定メモとなります。
開発中でソースが変更された際に、サーバーが自動でリロードしてくれるようになります。
以下の内容を個人的に少し調整した内容となります。
https://ktor.io/docs/auto-reload.html
尚、Application.confもしくはApplication.yamlを利用可能な前提での内容となります。
Application.ktのmain関数で、embeddedServer
、commandLineEnvironment
を利用していれば問題ないかと思います。
fun main(args: Array) {
embeddedServer(Netty, commandLineEnvironment(args)).start(wait = true)
}
Application.conf 修正
Applicaiton.confに以下を追加します。
ktor {
deployment {
development = true
watch = [ classes, resources ]
}
application {
modules = [ com.example.ApplicationKt.module ]
}
}
watchには、変更を監視する場所を指定します。
この状態でデバッグ実行すると、ログにwatchで指定したディレクトリが監視されていることが出力されます。
このログが出ていると、指定したディレクトリの内容が変更されてビルドされると、
自動的にサービスに反映されるようになります。
ただ、ビルド自体は手動もしくは自動で別途行う必要があります。
自動ビルド Gradle コマンド
IntelliJの機能でも自動ビルドがあったかと思います。
しかし、私の環境では、自動ビルドが効かない時があった経験と、
必ずいつでも自動ビルドして欲しいわけではないので、
よくGradleのコマンドで実行しています。
プロジェクトのルートディレクトリで、以下のコマンドを実行します。
./gradlewの部分は、実行場所に応じて調整ください。
./gradlew -t build
今回のメモは以上となります。
すこし準備が必要ではありますが、
以上の内容で自動反映されると思います。
都度、サービスの再起動が面倒な方はお試しください。