Java 项目热部署,节省构建时间的正确姿势
上周末,帮杨小邪(我的大学室友)远程调试项目。SpringBoot 构建,没有热部署,改一下就得重启相关模块。小小的 bug ,搞了我一个多小时,大部分时间都还在构建上(特么,下次得收钱才行)。我跟他说有个热部署插件叫 Jrebel,可以热部署,每次修改完代码需要测试的时候,只要 Build 一下就行?所有 Java 项目都能使用,他居然不知道。作为一个英俊男孩,我不得不写下这篇文章教他使用热部署。
Jrebel 是什么?
JRebel 是一款 JAVA 虚拟机插件,它使得 JAVA 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel 使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。当程序员在开发环境中对任何一个类或者资源作出修改的时候,这个变化会直接反应在部署好的应用程序上,从而跳过了构建和部署的过程。
简而言之,不管你修改了类还是资源,只需要重新 Build 一下相关的类,改动就直接反映到你的应用程序了。
Jrebel 安装
打开你的 IntelliJ IDEA 插件市场,搜索 Jrebel ,第一个就是。点击 install 安装,完了之后重启 IDEA。
Jrebel 激活
重启完之后会弹出如下框提示激活,选中 Team Url ,其中邮箱随便填就行,认证服务地址的格式是 https://jrebel.qekang.com/{GUID} 它需要一个 guid 参数,这个参数需要从 guid 服务器生成。它的地址是 https://www.guidgen.com/,直接打开生成一个 guid ( 不要用下图这个,可能失效),如下图:
复制 guid 填充到认证服务地址后面。比如:https://jrebel.qekang.com/7bea5149-69a5-4270-8190-3f049dc8d2d6,填到下图的认证服务地址栏。
点击 change license ,激活成功。
Jrebel 使用
点击 IDEA 左侧边栏边的 Jrebel 选项,配置需要热部署的模块,如下图,直接打上勾就可以。
一切准备就绪之后,你会发现工具栏多了如下图的这两个图标:一个是 Jrebel run 模式启动项目,一个是 Jrebel debug 模式启动(一些需要测试的模块,一般使用这个模式),现以 debug 模式启动 xxxx_collect 模块。
启动成功。假如,我现在对应用程序的效果不满意,又修改了刚刚勾选的 xxxx_collect 模块下的名为 xxxxFeignClientApi 的 java 类,如下图所示:
这是不需要重新启动,只需要重新 build 一下相关类即可,如果改动多的话,直接 build 模块就行。
以上就是 Jrebel 的使用教程,贼方便。Jrebel 每年可以省去部署用的时间花费高达 5.25 个星期(Jrebel 官方说的)。
最后
推荐下阿里云的服务器,新用户购买服务器 89 元 / 年、229 元 / 3 年。买个用来搭建项目(比如个人博客)准备面试、熟悉技术栈、学习 Linux 都可以。不是新用户也没关系,借用家人朋友身份证重新注册新用户(我用了我妹妹的
Java 项目热部署,节省构建时间的正确姿势的更多相关文章
- Eclipse中使用JRebel实现项目热部署(Maven插件版)
JRebel实现项目热部署(Maven插件版) 热部署,就是在应用运行过程中不进行重启,可直接进行软件升级. 在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效. tomc ...
- paip.提升用户体验--提升java的热部署热更新能力
paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力 "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...
- spring-boot项目热部署以及spring-devtools导致同类不能转换
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...
- Java服务器热部署的实现原理
转自:http://blog.csdn.net/chenjie19891104/article/details/42807959 在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在使用热部署 ...
- java的热部署和热加载
ps:热部署和热加载其实是两个类似但不同的概念,之前理解不深,so,这篇文章重构了下. 一.热部署与热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说 ...
- java 中 热部署与卸载关系
今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了.前几天又有同事在讨论这个问题.这里拿来分享一下. 在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在 ...
- JAVA代码热部署,在线不停服动态更新
本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java热部署. JDK代理的两种方式: 1.premain方式是Java SE5开始就提供的代理方式,但其必须 ...
- SpringBoot03 项目热部署
1 问题 在编写springBoot项目时,经常需要修改代码:但是每次修改代码后都需重新启动,修改的代码才会生效 2 这么实现IDEA能够像Eclipse那样保存过后就可以自动进行刷新呢 将sprin ...
- SpringBoot04 项目热部署详解
1 热部署 优点:适用于本地和线上.无需重启服务器 2 热部署和热加载的联系和区别 2.1 联系 不用重启服务器就可以编译和部署项目 都是基于Java的类加载器实现 2.2 字面区别 热部署在服务器运 ...
随机推荐
- poj 3295
题目意思就是计算表达式的值,如果所有情况下表达式为真就输出“tautology”,否则输出“not”. p, q, r, s, and t,每个人有两种情况,综合起来一共有32种情况,枚举所有情况最后 ...
- 关于top命令
top命令交互操作指令 下面列出一些常用的 top命令操作指令 q:退出top命令 :立即刷新 s:设置刷新时间间隔 c:显示命令完全模式 t::显示或隐藏进程和CPU状态信息 m:显示或隐藏内存状态 ...
- poj 3275 "Ranking the Cows"(DFS or Floyd+bitset<>)
传送门 题意: 农场主 FJ 有 n 头奶牛,现在给你 m 对关系(x,y)表示奶牛x的产奶速率高于奶牛y: FJ 想按照奶牛的产奶速率由高到低排列这些奶牛,但是这 m 对关系可能不能精确确定这 n ...
- Vue基础练习之Todo List
<body> <div id = "app"> <input type="text" v-model="inputVal ...
- H3C配置Hybrid端口
- css元素居中的几种方式
1.水平居中 <div style="width:200px;margin:0 auto;background-color: yellow;">水平居中</div ...
- MFC 获取本机IP、网络ip和物理地址
获取本机Ip CString CNet::GetLocalIP() { WSADATA wsaData; , ), &wsaData); ) { return ""; } ...
- 2018-8-10-resharper-跳转到源代码
title author date CreateTime categories resharper 跳转到源代码 lindexi 2018-08-10 19:16:52 +0800 2018-2-13 ...
- 2018-4-12-win10-uwp-使用油墨输入
title author date CreateTime categories win10 uwp 使用油墨输入 lindexi 2018-04-12 14:19:58 +0800 2018-2-13 ...
- [板子]KMP
KMP板子,你甚至可以用这个板子A掉luogu的3375 基础懒得说,要求一个Next数组. #include<cstdio> #include<algorithm> #inc ...