IDEA使用JRebel实现热部署

本文最后更新于:May 13, 2023 pm

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

目录

JRebel 是国外团队开发的一款收费工具,JRebel 允许开发团队在有限的时间内完成更多的任务修正更多的问题,发布更高质量的软件产品,JRebel 可快速实现热部署,节省了大量重启时间,提高了个人开发效率。
JRebel 是一款 JAVA 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

安装

在IDEA中搜索 jrebel 并安装。

或者下载对应的压缩包,然后在IDEA插件中导入进去。

https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions

激活

安装之后需要重启IDEA,JRebel插件会提示需要激活,点击Jrebel Activation进行激活。

打开File—>Settings—>JRebel & XRebel,点击右侧的Activate now

在线GUID地址在线生成GUID。

下载激活软件:GitHub地址 下载后点击exe运行程序。

然后打开IDEA激活窗口,设置URL:http://127.0.0.1:8888/{GUID},邮箱任意。

如果失败的话,刷新GUID重新替换即可。

设置

离线模式

选择File—>Settings—>JRebel & XRebel,点击右侧的WORK OFFLINE

自动编译

打开File—>Settings—>Build,Execution,Deployment—>Compiler—>勾选Build project automatically

运行时编译

打开File—>Settings—>Advanced Settings, 找到右侧的Compiler选项,然后勾选

修改热部署时间

打开File—>Settings—>JRebel & XRebel,右侧找到time Saved Statistics
下面有个时间线,可以自己任意调,滑到最左边是1秒生效。

启动

运行项目时要点击JRebel的按钮,而非原生的idea启动方式。出现如下则表示热部署启动成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2023-05-11 14:11:17 JRebel:  Starting logging to file: C:\Users\DragonOne\.jrebel\jrebel.log
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel: #############################################################
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel: JRebel Agent 2023.2.1 (202305020925)
2023-05-11 14:11:17 JRebel: (c) Copyright 2007-2023 Perforce Software, Inc.
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel: Over the last 1 days JRebel prevented
2023-05-11 14:11:17 JRebel: at least 6 redeploys/restarts saving you about 0 hours.
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel: License acquired from License Server: http://127.0.0.1:8888
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel: Licensed to DragonOne.
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel: You are using an offline license.
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel:
2023-05-11 14:11:17 JRebel: #############################################################

当修改代码后,控制台上出现如下则表示修改已更新:

1
2
2023-05-11 14:14:54 JRebel: Reloading class 'com.tothefor.demo.DemoCtr'.
2023-05-11 14:14:54 JRebel: Reconfiguring reprocessed bean 'demoCtr' [com.tothefor.demo.DemoCtr]

修改后不手动保存,热部署等待的时间较长;修改后保存一下,则热部署会很快。也就是相当于保存是告诉IDEA是否已修改完毕了,不告诉让他自己感受就会慢,告诉了就很快。

参考

https://blog.csdn.net/weixin_42694593/article/details/126448828