3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KtorのAutoReloadを有効にする。

Last updated at Posted at 2019-02-03

おはようございます。@naokiurです。
よろしくお願い致します。

2019年も引き続き、
個人的にKotlin/Ktorに興味を持っている毎日です。

AutoReload、便利ですよね。
公式に習い、設定したいと思います。

環境

  • MacBook Pro (Retina 13-inch、Early 2015)
  • macOS High Sierra 10.13.6
  • Java 1.8.0_191
  • IntelliJ IDEA CE 2018.3.4

実施したこと

  • application.confを修正した。

結果

  • AutoReloadが有効になった。

AutoReloadの設定

実施方法は2つあります。

  • embeddedServerに記載する
  • application.confに記載する

自分の今回のコードでは、 embeddedServerでサーバを起動しておらず、
application.confに設定を記載し、
io.ktor.server.netty.EngineMainを実行することで、
サーバを起動しておりました。

そのため、
application.confに記載する」方法を取りました。

application.conf
ktor {
    deployment {
        port = 8080
        watch = [ out/production ] // ← 追記する
    }

    application {
        modules = [ jp.ne.naokiur.api.ExecutorKt.api ]
    }
}

application.conf内の watchキーに、
今回のコードのコンパイル出力フォルダを設定します。
IntelliJのデフォルトになっているため、
out/productionを設定しました。

これによって、
コンパイル出力フォルダに変更があった場合、
AutoReloadするようになりました。

サーバ起動時、以下のようなログが出力されます。
16:36:19.876 [main] DEBUG Application - Watching /絶対パス/out/production/classes/〜 for changes.

ただし

コンパイル出力フォルダに変更があった場合なので、
gradle buildや、
IntelliJのcmd + F9で Build Projectを実施する必要があります。

勘違いしたところ

熟読しなかった自分のせいなのですが、
公式に watch = [ module1, module2 ]と書いてあったため、
最初、今回のコードのモジュール名である、 apiを設定してしまいました。

これでは有効にならず、
AutoReloadが有効になっていない旨の、
以下のようなログが出力されてしまいました。
16:20:24.636 [main] INFO Application - No ktor.deployment.watch patterns match classpath entries, automatic reload is not active

そのあたりのことは、ちゃんと公式にかかれていました…。

file:///path/to/project/build/classes/myproject.jarというクラスパスならば、
to/projectだとマッチします。
しかしパッケージ名のような com.mydomainではマッチしません。

今後

DBアクセスを実施したいと思っています。

参考にさせて頂きました

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?