オートリロード (Auto-reload)
オートリロード (Auto-reload)
開発中にサーバーを
制限事項
オートリロードは特定のモジュール宣言に対してのみ機能します。以下の表は、バージョンごとのサポート状況を示しています。| モジュールの種類 | <= 3.2 | > 3.2 |
| ラムダ初期化子 (Lambda initializer) | ❌ サポートされていません | ❌ サポートされていません |
| ブロッキング関数の参照 | ✅ サポートされています | ❌ サポートされていません |
| サスペンド関数の参照 | ❌ サポートされていません | ✅ サポートされています |
| 設定の参照 (Config reference) | ✅ サポートされています | ✅ サポートされています |
開発モードを有効にする
オートリロードを使用するには、まず開発モードを有効にする必要があります。 これは、
EngineMainを使用してサーバーを実行する場合は、設定ファイルで開発モードを有効にします。embeddedServerを使用してサーバーを実行する場合は、io.ktor.developmentシステムプロパティを使用できます。
開発モードが有効になると、Ktorは作業ディレクトリからの出力ファイルを自動的に監視します。 必要に応じて、監視パスを指定することで、監視対象のフォルダーを絞り込むことができます。
監視パスを構成する
開発モードを有効にすると、Ktorは作業ディレクトリからの出力ファイルの監視を開始します。 例えば、Gradleでビルドされた ktor-sample プロジェクトの場合、以下のフォルダーが監視されます。
監視パスを使用すると、監視対象のフォルダーのセットを絞り込むことができます。 これを行うには、監視パスの一部を指定します。 例えば、ktor-sample/build/classes サブフォルダーの変更を監視するには、監視パスとして classes を渡します。 サーバーの実行方法に応じて、以下の方法で監視パスを指定できます。
application.conf または application.yaml ファイルで、
watchオプションを指定します。yaml次のように複数の監視パスを指定することもできます。
yaml完全な例はこちらで確認できます: autoreload-engine-main
embeddedServerを使用している場合は、watchPathsパラメーターとして監視パスを渡します。Kotlin完全な例については、以下を参照してください。 autoreload-embedded-server
変更時に再コンパイルする
オートリロードは出力ファイルの変更を検出するため、プロジェクトをリビルドする必要があります。 これは IntelliJ IDEA で手動で行うか、Gradle の -t コマンドラインオプションを使用して継続的ビルド実行を有効にすることで行えます。
IntelliJ IDEA でプロジェクトを手動でリビルドするには、メインメニューから ビルド | プロジェクトのビルド を選択します。
Gradle を使用して自動的にプロジェクトをリビルドするには、ターミナルで
-tオプションを付けてbuildタスクを実行します。BashTIP
プロジェクトのリロード時にテストの実行をスキップするには、
buildタスクに-xオプションを渡すことができます。Bash
