Skip to content

自动重载 (Auto-reload)

自动重载 (Auto-reload)

在开发过程中

重新启动
了解如何运行服务器 Ktor 应用程序。
服务器可能需要一些时间。 Ktor 允许您通过使用自动重载 (Auto-reload)来克服这一限制,它可以在代码更改时重载应用类并提供快速的反馈循环。 要使用自动重载,请遵循以下步骤:

限制

自动重载仅适用于特定的模块声明。下表显示了跨版本的支持情况:
模块类型<= 3.2> 3.2
Lambda 初始值设定项❌ 不支持❌ 不支持
阻塞函数引用✅ 支持❌ 不支持
挂起函数引用❌ 不支持✅ 支持
配置引用✅ 支持✅ 支持

支持

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