简介
在日常开发中,调试一个web项目,需要编译进行打包后放入容器中运行,如果对java代码进行了改动,就需要重新编译打包并重启容器。实际开发中,会经常遇到频繁改动代码进行调试,这样就会频繁的进行编译重启web容器,如果项目比较大,编译和重启web容器的时间就会很长,很大的浪费了时间,如果java能像动态语言一样,修改立即生效,就会极大的提高开发效率。那么,jrebel(https://zeroturnaround.com/software/jrebel)/就是解决这种问题的的一个方案,jrebel 有几大好处:
- 实时变更可见性,
实时查看Java应用程序的迭代代码和资源更改结果。 - 简化开发流程
开发人员通过消除通常用于等待应用程序构建和重新部署步骤的停机时间来保持其节奏和焦点。使用JRebel,可以避免这些中断。 - 维护应用程序状态
避免重新部署后重现更改前应用程序状态所花费的时间。 - 提高开发效率,节省开发时间。
停止等待构建和重新部署以进行代码更改。编写代码并刷新浏览器。
jrebel实现原理
JRebel会监控IDE里项目的目标编译目录和源码目录(这个需要在rebel.xml里配置,以下会讲到),一旦发生改变,就重新装载类并替换。这就达到了动态生效的效果。与动态语言不同的是,它依然是先需要进行编译的,所以如果修改后编译不通过,那么也无法进行替换。
安装
下面以Intellig IDEA为例介绍。
1、打开 idea setting
idea 插件安装页面
在线授权地址激活,输入(http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b107ce)
配置
1、打开视图>工具窗口> JRebel。该JRebel的面板窗口打开
选择显示左侧栏
2、通过选择列复选框为所需模块启用JRebel
选择需要热部署的模块
启动
- 使用Run with JRebel(或从命令行)重新启动应用程序服务器或Java应用程序。
选择运行jrebel
-
使用Build> Build Project命令编译类并更新应用程序,或者自动编译。
进入设置setting,Build,Execut, Deployment -> Compiler 勾选右侧的Build Project automatically
IDEA开启项目运行时自动make, ctrl + shift + a搜索命令:registry -> 勾选compiler.automake.allow.when.app.running
自动更新资源,debug模式下立即生效
- 在浏览器中刷新应用程序以查看更改!