来源:my.oschina.net/u/3276866/blog/10091251
来源:blog.csdn.net/A_D_H_E_R_E/article/details/132483843
最近,小哈在带小伙伴做 前后端分离博客项目,手摸手教学,后端 + 前端全栈开发,从 0 到 1 手敲,1v1 答疑,直到项目上线。目前专栏第六章快要完结,已更新了53小节,共计83154字, 演示截图:444张,持续更新中..后续还会上新更多项目 , 戳我加入
背景
在 java 开发中我们经常会遇到这样的场景,代码需要在服务器上(测试或者沙箱)运行,但是每次修改代码我们都需要经历打包 -> 部署 -> 启动等一些列的流程,这一套流程下来短则几分钟,长则几十分钟都有可能,漫长的打包流程浪费了我们大量的青春。
市面上有很多 java 热部署的插件,要么是只能修改方法体而不能新增字段和方法,要么就是只能在本地热部署,本人也是在工作中部署浪费了无数的青春,于是我痛定思痛,决定写一款远程热部署插件来提高效率,现将该插件 HotSeconds 分享给大家 (本插件分为 HotSecondsClient 和 HotSecondsServer),希望能给大家带来帮助。
使用场景
IDEA 本地修改代码直接一键化热部署到远程服务器,只需要几秒钟。
支持修改代码块,新增字段,新增方法,新增类。
支持一些开源框架比如 Spring, SpringMVC 和 MyBatis。比如新增一个 @Autorwired 字段或者新增 MyBatis 的接口或者修改.xml 也是可以支持热部署的。
最重要的一点,能支持自由扩展,比如公司内部的框架,或者一些新出的第三方框架,需要在热部署文件后执行一些刷新缓存或者上下文的操作,也能自定义。
有了上述特点,部署效率至少可以提升 100 倍,不过光是热部署改 bug 还远远不是本插件的目标,那只是牛刀小试,我的目标是在线开发,远程服务器就是你的执行端,而本地,仅仅是一个写代码端。
使用演示
安装完插件后,Debug 旁边有一个按钮,打开或者关闭连接远程
![7b1e68ab21f62a3b6de97b2614c5aea7.png](https://i-blog.csdnimg.cn/blog_migrate/fe2f4bf874eabe9b44b07d91d0a36efe.png)
高版本的 IDEA 可以点 Run->HotSeconds Start/Stop 打开和关闭。
首次打开会弹出配置选项,可以配置本地哪些目录下的文件上传到远程。
![4affc6fa60601bcb786fff9732fa5948.png](https://i-blog.csdnimg.cn/blog_migrate/b07e5a3ff5ed6b8b48ff2a33d258d30d.png)
热部署演示
原来代码长这样
@Controller
@RequestMapping("/view")
public class HelloViewController {
@RequestMapping("/test")
@ResponseBody
public String test() {
return "hello,test";
}
}
我们修改代码为
@Controller
@RequestMapping("/view")
public class HelloViewController {
@RequestMapping("/test")
@ResponseBody
public String test() {
return "hello,"+name();
}
private String name(){
return "Tom";
}
}
右键,选中 Hot swap this file to remote
![4b2c45a1fa6aee8b87adb379e3b2d112.png](https://i-blog.csdnimg.cn/blog_migrate/28c756ef5464d3a754237bd70149a285.png)
然后就能把代码热部署到远程,刷新浏览器页面,代码就生效了。
![bac2d978165c1c0a2bcd02a4e27d764b.png](https://i-blog.csdnimg.cn/blog_migrate/2dc8155a442e7c543f3255cb0b938fe9.png)
我们接着新增一个注入的字段和 controller
![5ae2fc0c8c768d008575ddc2caab08b8.png](https://i-blog.csdnimg.cn/blog_migrate/4ed313cacd538dc46a21696f808769bb.png)
右键热部署一下,刷新网页可以看到结果
![8bb86a087099d0f443974a7022ee5419.png](https://i-blog.csdnimg.cn/blog_migrate/b459ba7209045e76d2f051266951abd5.png)
我们对 UserMapperXml.xml 修改一下 Mybatis 代码
![544b0f9f748c2ed841150c55c41257cc.png](https://i-blog.csdnimg.cn/blog_migrate/06a9bc1b05c5c1553c32c3f8f46f60a0.png)
执行右键热部署刷新网页就能看到结果
![9d473b1db7d9f91a4b3e72fbea1dd7e2.png](https://i-blog.csdnimg.cn/blog_migrate/14b3ba363a36767e78fa9f061320c56d.png)
远程编译并热部署
右键菜单下有远程编译并热部署的功能,主要是解决本地和远程 jdk 版本不一致的问题,已兼容 jre 启动问题和 lombok。
![33c13980d44f78585a7f0d0886c3e93c.png](https://i-blog.csdnimg.cn/blog_migrate/e32d3f285419e3910e5222d0774f240d.png)
热部署 jar 包和 jar 包内的.class
打开一个 jar 包的.class,右键,可以看到两个选项,可以将当前的.class 热部署到远程,也可以将整个 jar 包热部署到远程。
![52a74382576c86e68c44bc23a061b39d.png](https://i-blog.csdnimg.cn/blog_migrate/d9b51e8d98bcd27cdb112b6008e0dd7d.png)
自动热部署
在 Run->HotSeconds Settings->Settings 中可以设置自动热部署,只要本地文件修改了就会自动热部署到远程。
改完记得保存一下 (ctrl+s/command+s),不然会有延迟
![d88bc728410cd6fe7835c95cc4a3b4c3.png](https://i-blog.csdnimg.cn/blog_migrate/224f0624641d8fb9e6f96d7d80367bc7.png)
远程执行方法
附带了一个非常强大的功能,远程执行静态无参方法
![d0d1752296f4243468d8ef32c4ec75b0.png](https://i-blog.csdnimg.cn/blog_migrate/875ff8e251ada1e504fe27b22344602d.png)
这样可以不用写接口就可以直接执行远程的函数,可以在这个函数里面调用一些有参数或者非静态的方法,中间需要比如 Spring 容器上下文自己去维护即可,非常方便。
![e795df7d58c5f60a96090d176ba7b365.png](https://i-blog.csdnimg.cn/blog_migrate/a6251012d4c6f161530ea67bb313fb0e.png)
安装文档
本插件分为 HotSecondsClient 和 HotSecondsServer,请点击下面文档查看详细的安装教程。
❝https://github.com/thanple/HotSecondsIDEA/blob/master/install/使用文档.md
❞
👉 欢迎加入小哈的Java项目实战知识星球
,手摸手带你做前后端分离项目,手摸手教学,后端 + 前端包办,从 0 到 1 手敲,1v1 答疑,直到项目上线,目前专栏第六章快要完结,已更新了53小节,共计83154字, 演示截图:444张,后续还会上新更多项目奥。
1. 前后端分离,开源的 Spring Boot + Vue 3.2 的博客,泰裤辣!
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。
PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。
点“在看”支持小哈呀,谢谢啦