Skip to content

自動重新載入 (Auto-reload)

自動重新載入 (Auto-reload)

在開發過程中

重新啟動
了解如何執行伺服器端 Ktor 應用程式。
伺服器可能會耗費不少時間。 Ktor 允許您透過使用 自動重新載入 (Auto-reload) 來克服此限制,它會在程式碼變更時重新載入應用程式類別,並提供快速的回饋循環。 要使用自動重新載入,請遵循以下步驟:

限制

自動重新載入僅適用於特定的模組宣告。下表顯示了不同版本的支援情況:
模組類型<= 3.2> 3.2
Lambda 初始設定式❌ 不支援❌ 不支援
阻塞函式參考 (Blocking function reference)✅ 已支援❌ 不支援
掛起函式參考 (Suspend function reference)❌ 不支援✅ 已支援
組態參考 (Config reference)✅ 已支援✅ 已支援

已支援

kotlin

不支援

kotlin

啟用開發模式

要使用自動重新載入,您需要先啟用 開發模式。 這取決於您

建立並執行伺服器
了解如何根據您的應用程式部署需求建立伺服器。
的方式:

  • 如果您使用 EngineMain 來執行伺服器,請在 組態檔 中啟用開發模式。

  • 如果您使用 embeddedServer 執行伺服器,可以使用 io.ktor.development 系統屬性。

啟用開發模式後,Ktor 將會自動監控工作目錄中的輸出檔案。 如有需要,您可以透過指定 監控路徑 來縮小監控資料夾的範圍。

配置監控路徑

當您 啟用 開發模式時, Ktor 會開始監控工作目錄中的輸出檔案。 例如,對於使用 Gradle 組建的 ktor-sample 專案,將會監控以下資料夾:

監控路徑允許您縮小監控資料夾的範圍。 為此,您可以指定監控路徑的一部分。 例如,要監控 ktor-sample/build/classes 子資料夾中的變更, 請將 classes 作為監控路徑傳遞。 根據您執行伺服器的方式,您可以透過以下方式指定監控路徑:

  • application.confapplication.yaml 檔案中,指定 watch 選項:

    yaml

    您也可以指定多個監控路徑,例如:

    yaml

    您可以在此處找到完整的範例: autoreload-engine-main

  • 如果您使用的是 embeddedServer,請將監控路徑作為 watchPaths 參數傳遞:

    Kotlin

    完整範例請參閱 autoreload-embedded-server

在變更時重新編譯

由於自動重新載入會偵測輸出檔案的變更, 因此您需要重新組建專案。 您可以在 IntelliJ IDEA 中手動執行此操作,或者 使用 -t 命令列選項在 Gradle 中啟用持續建置執行。

  • 要在 IntelliJ IDEA 中手動重新組建專案,從主選單中選擇 Build | Rebuild Project

  • 要使用 Gradle 自動重新組建專案, 您可以在終端中執行帶有 -t 選項的 build 任務:

    Bash

    TIP

    要在重新載入專案時跳過執行測試,可以將 -x 選項傳遞給 build 任務:

    Bash