SpringBoot原生提供了DevTools模块用于实现热部署,但需要向项目中引入该依赖,较为不便。故这里我们将介绍基于JRebel的热部署技术
服务搭建
这里先在CentOS 8环境下安装Docker。与此同时,为避免普通账号在执行docker相关命令时需要root权限,故在下述命令中通过使用gpasswd命令将普通账号加入docker用户组来方便日常操作
1 | # 通过阿里源安装Docker |
拉取镜像JRebel镜像并创建,这里通过 —restart always 选项可让容器随Docker自启动
1 | # 拉取JRebel镜像 |
至此,可通过访问 http://{宿主机IP}:9100/guid 验证JRebel服务是否可用。测试结果如下,符合预期
配置IDEA
在IDEA中安装 JRebel and XRebel for IntelliJ 插件
在IDEA中配置勾选 Build project automatically
通过Search Everywhere(可通过连按两次Shift键 或 Navigate->Search Everywhere 打开)搜索、打开 Registry…
打开Registry后,勾选 compiler.automake.allow.when.app.running 项,重启IDEA
激活JRebel
先通过 http://{宿主机IP}:9100/guid 获取guid,如下所示
然后在IDEA中JRebel配置项进行激活,这里我们选择Team URL的方式。分别填写 http://{宿主机IP}:9100/{上一步获取的guid} 、任意邮箱。如下所示
至此,我们的JRebel就已经激活成功了
实践
可以看到JRebel提供了两个按钮,分别用于支持热部署的Run、Debug
当我们修改源码后,通过Build -> Build Projec即可手动触发编译并通过JRebel进行热部署,十分方便