Please enable Javascript to view the contents

详解 JRebel 的使用

 ·  ☕ 3 分钟

热部署插件 JRebel: 是一个 JVM Java 代理,它与应用服务器集成,使得类可以用现有的类加载器重新加载。

只有修改过的类才会重新编译并立即在运行的应用程序中加载。

JRebel 单独使用

使用 rebel.xml 进行应用程序配置

JRebel 将您的项目工作区直接映射到正在运行的应用程序。然后,JRebel 监视您对类和资源所做的更改-并将其智能地反映在您的应用程序中。

为了做到这一点,JRebel 需要知道您的类和资源在哪里。为此,JRebel 使用 rebel.xml 配置文件。此 XML 文件将您部署的项目映射回工作空间。

将应用程序部署为 WAR 或 EAR 软件包时,这是强制性的。 每个模块需要一个 rebel.xml 配置文件。

使用 JRebel IDE 插件时,建议使用 IDE 插件生成 rebel.xml。我们为 Maven 和 Gradle 提供专用插件。使用专用的 Maven 和 Gradle 插件生成 rebel.xml 是针对使用 IDE 插件生成不可用的情况而设计的。

  • 如果是 Web 模块,则 rebel.xml 配置文件应最终位于 WEB-INF/classes 目录中。
  • 如果是 EJB 模块或 JAR 库,则应位于归档文件的根目录中。

可以将其放置在项目中的源文件夹或资源文件夹的根目录(.properties 文件所在的位置)中,并确保将其复制到目标目录。

JRebel 作为 IDE 插件使用

这里只讲 IntelliJ IDEA 中的 JRebel 插件

IntelliJ IDEA 的 JRebel 插件包括 JRebel 代理,可帮助您自动生成 JRebel 配置。 只需单击一下,即可为应用程序和服务器启用 JRebel,并改善了 IDE 中的调试支持。

项目配置

唯一需要的配置文件是 rebel.xml。 JRebel 使用它来将正在运行的应用程序映射到工作空间。 好消息是 IDE 插件可以为您自动执行此配置。

在项目视图中的项目节点上单击鼠标右键,然后选择 JRebel > rebel.xml,另外也可以在工具窗口中生成。

intellij-generate-rebel-xml-full.png

从这个上下文菜单中,您还可以打开模块设置。为此,右键单击所需的模块并选择 JRebel > Configure module。

如果要修改配置文件,请参阅 rebel.xml 文件格式的官方参考。

注意,在项目中使用 Maven 或 Gradle 时,可以考虑使用相应的插件来生成 rebel.xml(而不是 IDE 插件)。有关更多信息,请参阅 Maven 插件或 Gradle 插件。

另外我们可以设置 IDEA 项目自动编译

IDEA开启自动编译.png

JRebel 工具窗口

JRebel 工具窗口提供了活动项目的 JRebel 配置概述。此工具窗口显示项目模块的列表。从这里可以为特定模块快速启用 JRebel 配置。

intellij-jrebel-tool-window.png

通过选中模块名称旁边的(图标带 JR 的第一个)复选框,您将生成 rebel.xml 配置文件,该文件将放置在项目的源码树中。对于 Maven 项目,它将被放入 src/main/resources 中,以便在构建期间自动获取它。

在 rebel.xml 中使用相对路径:
请参阅此处获取说明。 如果您要提交 rebel.xml 并与整个团队共享配置,可以使用相对路径。

服务启动

IntelliJ IDEA 的 JRebel 插件包括专用的启动按钮。 默认情况下,这些按钮位于主工具栏和导航工具栏上。 您也可以通过"Run"菜单找到这些命令。

intellij-jrebel-launch-buttons.png

第一个按钮使用 JRebel 启动容器。 第二个按钮在调试模式下使用 JRebel 启动容器。

通过从这些按钮之一启动后,JRebel 插件将自动添加适当的命令行参数

禁用应用程序自动部署

Disable automatic application deployment

通过 “Run > Edit Configurations.” 打开相应应用程序服务器的运行/调试配置。在 “Server” 标签页上中的 “Running Application Update Policies(更新策略)” 下的 On frame deactivation 设置为 Do nothing

intellij-rundebugconf_爱奇艺.jpg

现在,您可以使用 JRebel运行JRebel调试 按钮来让 JRebel 启动相关的配置。

常见问题

网上收集的一些问题:

对于 Web 项目需要以"war exploded"形式发布,不能以"war"包形式发布。因为只有 war exploded 才会出现 update classes and resource

参考

Application configuration using rebel.xml – JRebel manual

您的鼓励是我最大的动力
alipay QR Code

Felix
作者
Felix
如无必要,勿增实体。

3

目录