目录

idea支持热部署

前言

虽然 IDEA 本身支持热部署,但功能较弱,只支持方法内部代码更新,如果新增方法则需要重启项目,使用 Jrebel 可以实现完全的项目热部署

热部署原理很简单,就是重新编译改动后的java文件生成新的class,再将class文件加载到内存,jdk自带的classloader将class文件加载内存中后就不会再重新加载,热部署工具使用自己的classloader,每次加载都去查看是否有变化,有变话则重新加载class。

本文介绍使用Jrebel插件进行热部署

JRebel是一套JavaEE开发工具。JRebel允许开发团队在有限的时间内完成更多的任务修正更多的问题,发布更高质量的软件产品。 JRebel是收费软件,用户可以在JRebel官方站点下载30天的评估版本。

Jrebel 可快速实现热部署,节省了大量重启时间,提高了个人开发效率。

JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。当程序员在开发环境中对任何一个类或者资源作出修改的时候,这个变化会直接反应在部署好的应用程序上,从而跳过了构建和部署的过程,每年可以省去部署用的时间花费高达5.25个星期。

安装步骤

  1. 安装jbrebel插件

  2. 下载激活文件

    前往 Jrebel License Server 下载 ReverseProxy_darwin_amd64 该文件是 mac 可使用的

  3. 为文件添加权限并运行

    1
    2
    
    chmod 777 ./ReverseProxy_darwin_amd64
    $bash ./ReverseProxy_darwin_amd64
    

    运行成功后显示如下内容:

    1
    
    2020/10/28 13:12:45 Listening on 0.0.0.0:8888, forwarding to http://idea.lanyus.com:80
    
  4. 前往 Jrebel 配置界面按如下输入

    20201028133059

    地址后面需要跟一串 GUID 验证,邮箱可随意输入,成功激活后如下所示:

    http://img.cana.space/picStore/20201028132941.png

  5. 将Jrebel设置为离线模式,也就是上图中Work offline按钮,可确保180天有效

    • 180 天后重复上述操作即可
    • 如果不设置为离线模式,终端运行的程序就不能退出,一旦退出激活就会失效

使用

下载下来自带jrebel和xrebel,介绍如下:

  • JRebel:修改完代码,不想重启服务,就使想代码生效。
  • XRebel:请求中,各个部分代码性能监控。例如:方法执行时间,出现的异常,SQL执行时间,输出的Log,MQ执行时间等。

平时我们只使用jrebel功能即可

  1. run和debug使用rebel run、rebel debug
  2. 重新编译文件,cmd+shift+f9重新编译单个java文件,cmd+f9编译整个工程

注意:修改了配置文件之后还是需要重新部署,比如日志级别。

静态文件修改后一般直接能看到变化,像springboot模板文件需要将cache设置为false后就能看到变化