热部署

Jmix 支持热部署技术,该技术支持将项目更改立即应用于正在运行的应用程序,而无需重新启动应用服务。

热部署支持下列类和资源:

  • 界面 XML 描述和控制器;

  • 界面控制器用来初始化或通过静态方法访问的类;

  • 本地化消息;

  • 菜单;

  • Fetch plans;

  • 资源角色;

  • 行级角色。

实体类和 Spring bean 不支持热部署。

热部署工作原理如下:

  • Studio 会检查更改的源文件:

    • 如果是资源文件,Studio 将这些资源文件复制到 .jmix/conf 文件夹;

    • 如果是 Java 或 Kotlin 源文件,Studio 会编译这些文件并复制到项目的 build/classes 文件夹。

  • 当应用程序打开新界面时,会从上述文件夹中加载新的类和资源文件。

热部署资源放置的文件夹位置通过 jmix.core.conf-dir 应用程序属性确定。在应用程序启动时,该文件夹会由 Run/Debug Configuration Settings 中配置的 Before launch 任务清空。

Studio 还会向应用程序发送信号,要求清除相应的缓存,以便加载更改后的资源。包括消息缓存、fetch plan 配置、注册的界面以及菜单项。信号是作为一个触发器文件放在 .jmix/temp/triggers 目录中(目录可通过 jmix.core.temp-dir 配置修改)。

应用程序可能需要 2-3 秒重新加载 Studio 保存后的类和资源文件。如果在打开的界面看不到期望的改动,可以关了界面重开试试。