上周末,帮杨小邪(我的大学室友)远程调试项目。SpringBoot 构建,没有热部署,改一下就得重启相关模块。小小的 bug ,搞了我一个多小时,大部分时间都还在构建上(特么,下次得收钱才行)。我跟他说有个热部署插件叫 Jrebel,可以热部署,每次修改完代码需要测试的时候,只要 Build 一下就行?所有 Java 项目都能使用,他居然不知道。作为一个英俊男孩,我不得不写下这篇文章教他使用热部署。

Jrebel 是什么?

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

简而言之,不管你修改了类还是资源,只需要重新 Build 一下相关的类,改动就直接反映到你的应用程序了。

Jrebel 安装

打开你的 IntelliJ IDEA 插件市场,搜索 Jrebel ,第一个就是。点击 install 安装,完了之后重启 IDEA。


Jrebel 插件

Jrebel 激活

重启完之后会弹出如下框提示激活,选中 Team Url ,其中邮箱随便填就行,认证服务地址的格式是 https://jrebel.qekang.com/{GUID} 它需要一个 guid 参数,这个参数需要从 guid 服务器生成。它的地址是 https://www.guidgen.com/,直接打开生成一个 guid ( 不要用下图这个,可能失效),如下图:


生成的 guid

复制 guid 填充到认证服务地址后面。比如:https://jrebel.qekang.com/7bea5149-69a5-4270-8190-3f049dc8d2d6,填到下图的认证服务地址栏。


Jrebel 激活

点击 change license ,激活成功。


Jrebel 激活成功

Jrebel 使用

点击 IDEA 左侧边栏边的 Jrebel 选项,配置需要热部署的模块,如下图,直接打上勾就可以。


选择模块

一切准备就绪之后,你会发现工具栏多了如下图的这两个图标:一个是 Jrebel run 模式启动项目,一个是 Jrebel debug 模式启动(一些需要测试的模块,一般使用这个模式),现以 debug 模式启动 xxxx_collect 模块。


Jrebel 启动

启动成功。假如,我现在对应用程序的效果不满意,又修改了刚刚勾选的 xxxx_collect 模块下的名为 xxxxFeignClientApi 的 java 类,如下图所示:


修改的 java 类

这是不需要重新启动,只需要重新 build 一下相关类即可,如果改动多的话,直接 build 模块就行。


重新 Build

以上就是 Jrebel 的使用教程,贼方便。Jrebel 每年可以省去部署用的时间花费高达 5.25 个星期(Jrebel 官方说的)。

最后

推荐下阿里云的服务器,新用户购买服务器 89 元 / 年、229 元 / 3 年。买个用来搭建项目(比如个人博客)准备面试、熟悉技术栈、学习 Linux 都可以。不是新用户也没关系,借用家人朋友身份证重新注册新用户(我用了我妹妹的

Java 项目热部署,节省构建时间的正确姿势的更多相关文章

  1. Eclipse中使用JRebel实现项目热部署(Maven插件版)

    JRebel实现项目热部署(Maven插件版) 热部署,就是在应用运行过程中不进行重启,可直接进行软件升级. 在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效. tomc ...

  2. paip.提升用户体验--提升java的热部署热更新能力

    paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力  "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...

  3. spring-boot项目热部署以及spring-devtools导致同类不能转换

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  4. Java服务器热部署的实现原理

    转自:http://blog.csdn.net/chenjie19891104/article/details/42807959 在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在使用热部署 ...

  5. java的热部署和热加载

    ps:热部署和热加载其实是两个类似但不同的概念,之前理解不深,so,这篇文章重构了下. 一.热部署与热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说 ...

  6. java 中 热部署与卸载关系

    今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了.前几天又有同事在讨论这个问题.这里拿来分享一下. 在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在 ...

  7. JAVA代码热部署,在线不停服动态更新

    本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java热部署.   JDK代理的两种方式: 1.premain方式是Java SE5开始就提供的代理方式,但其必须 ...

  8. SpringBoot03 项目热部署

    1 问题 在编写springBoot项目时,经常需要修改代码:但是每次修改代码后都需重新启动,修改的代码才会生效 2 这么实现IDEA能够像Eclipse那样保存过后就可以自动进行刷新呢 将sprin ...

  9. SpringBoot04 项目热部署详解

    1 热部署 优点:适用于本地和线上.无需重启服务器 2 热部署和热加载的联系和区别 2.1 联系 不用重启服务器就可以编译和部署项目 都是基于Java的类加载器实现 2.2 字面区别 热部署在服务器运 ...

随机推荐

  1. mac 安装 adb

    安装命令 brew cask install android-platform-tools 测试安装情况 adb devices 设备打开开发者模式 略 查看log并过滤出设备id adb logca ...

  2. H3C 单区域OSPF配置示例一

  3. 喵喵电影git操作

    1.git remote 2.git remote add origin '项目地址'   (origin为远程仓库名字) 3.git remote 4.git push origin master ...

  4. Linux 内核 ksets 之上的操作

    对于初始化和设置, ksets 有一个接口非常类似于 kobjects. 下列函数存在: void kset_init(struct kset *kset); int kset_add(struct ...

  5. 2019-8-31-dotnet-删除只读文件

    title author date CreateTime categories dotnet 删除只读文件 lindexi 2019-08-31 16:55:58 +0800 2019-02-28 1 ...

  6. Android TextView调用Settext()耗时的原因

    当textview的宽设置为wrap_content的时候,底层会调用checkForRelayout函数,这个函数根据文字的多少重新开始布局 因此将宽度设置为固定值或者match_parent的时候 ...

  7. 错误 1 未能找到类型或命名空间名称“”, 引入DLL文件出现提示文件不存在问题

    在所有引入都正确的情况下,查看项目目标框架是否正确

  8. boostrap-非常好用但是容易让人忽略的地方【3】:clearfix

    代码 显示结果 代码 结果

  9. 第二阶段:2.商业需求文档MRD:1.M版本管理

    版本管理的例子.V=Version.注意大中小版本的区分.V1.2.2 第一个数字1就是大版本 中间的2就是中版本 末尾的2就是小版本.大版本就是方向的变更,比如我的用户之前主要是面向男性,现在要面向 ...

  10. springboot 动态修改定时任务

    1.静态定时 1)启动类加上注解@EnableScheduling @EnableAsync @EnableScheduling @SpringBootApplication @MapperScan( ...