开源、免费的热部署工具HotSeconds使用总结
# 热部署工具——hotseconds的使用总结
在我写代码的过程中,我总是深受繁琐的打包和编译过程的烦恼,springboot项目大一点就要编译打包个几分钟,极大地降低了我的效率。于是我就开始寻找有没有一种方式可以简化这一个过程。后来的开发和学习中,我渐渐了解到了——热部署这一个解决方式。
我了解到的热部署方式有 spring-boot-devtools、JRbel 最后是这篇文章的主角——hotseconds
几个热部署工具的对比
spring-boot-devtools
- 优点
功能比较完备
可以直接依赖导入
是springboot原生,对于springboot的支持可能很好 - 缺点
不支持远程热部署
效率稍慢
没有idea插件支持
JRbel
- 优点
功能最为完备
技术支持最强
有插件端 - 缺点
贵,如果想要破解也是挺麻烦的(反正我没找到好的破解方法)
配置繁琐
HotSeconds
- 优点
==开源免费==
功能也十分完备
支持==远程热部署==
有插件端
可拓展性强 - 缺点
技术支持可能稍弱
具体限制看总结功能部分
后面我会持续更新使用的体验
ps:本人并没有完全用过以上三款热部署工具,只用过hotseconds,再总结身边人的使用体验做的横向对比,如果有不同意见欢迎评论区补充!!!
下面就是完全小白级的安装教程了
安装热部署教程
下面是作者的安装文档(对于我来说其实感觉这份文档挺难懂的,本人菜)
https://github.com/Liubsyy/HotSecondsIDEA/blob/master/install/使用文档.md
然后在我疯狂提问下,大佬终于连夜出了一份新的萌新教程(泪目)。
https://juejin.cn/post/7325375988853358607
中间遇到的问题
jdk版本不兼容
我在开始的时候服务器jdk版本是1.8的392版本,然后出现了不兼容的报错,远程热部署启动不起来
- 解决办法
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
在上面的链接中找到181版本的jdk下载,ps:注意不要下成jre了。
我的环境是linux 64位 ,所以我下载的版本就是jdk-8u181-linux-x64.tar.gz
如何安装jdk到linux可以看我的这篇博客
https://blog.csdn.net/weixin_60498767/article/details/135687473
里面有很全的服务器环境配置方法
完全不知道这个插件怎么运用
说实在,作为一个小白,我按照作者的教程把压缩包解压了,sh install又java -XXaltjvm=dcevm -version之后,我就不知道要干嘛了。我就以为完事了,就跑去client端开始连接。其实我还需要打包一个jar包传到服务器中,也就是他的教程说的${path2},然后用添加了jvm参数的启动项目命令来启动才能连接。==记得添加服务器的开放端口==
yum指定版本安装出现问题
我开始的时候想着用yum指定版本我就可以方便快捷的安装到181版本了,后来我发现yum给我下载回来一个只有18kb的tar.gz,根本解压不了。踩坑+1.
添加jvm参数的问题
添加jvm参数的问题我遇到的最多,坑都踩了一遍:
- 添加jvm参数添加在-jar后面的天才就是我
- 不指定hostname会出现重定向到服务器私网ip然后timeout的现象
完整且正确的启动项目命令
1 | nohup java -XXaltjvm=dcevm -javaagent:HotSecondsServer.jar的所在位置=hotconf=hot-seconds-remote.xml的所在位置 -Djava.rmi.server.hostname=你服务器的公网ip -jar 项目的jar包 > outjava.txt & |
下面是一个例子
1 | nohup java -XXaltjvm=dcevm -javaagent:/usr/local/hotdeploy/HotSecondsServer.jar=hotconf=/www/newer/hot-seconds-remote.xml -Djava.rmi.server.hostname=82.13.82.13 -jar springboot.jar > outjava.txt & |
热部署不生效
这个问题是我最头痛的,困扰了我很久。场景是这样的: 我在配置好,连接成功,且无任何报错下开始热部署。我修改代码为swagger的文档,想通过热部署直接同步文档给前端看,但是发现热部署之后的文档依然没有变化。
我拉取更新版本之后的代码,发现热部署到那边报错,类找不到的异常
我新增接口热部署过去,发现浏览器访问不了,返回403,怀疑没有热部署成功。当然由于项目中应用了springsercurity,所以403也可能是由于springsercurity没开放地址,所以我重新添加了地址热部署过去,发现还是403.
不生效原因解析:热部署对于配置类和swagger是不支持的,还要写刷新逻辑。至于怎么写,我研究一下,到时再写博客。热部署的pom.xml如果更新了,依赖似乎还没能导入,所以会产生找不到类的情况。
总结功能
- hotseconds的限制
这个热部署插件还是挺有用的,但只是适合一些不用修改swagger文档,还有配置类的应用场景。比如代码的小规模修改,临时增删简单方法。对于一些框架的适配还要自己去写一些刷新逻辑到代码中,不然就会不生效。
暂时就体验到这里,后面我还会更新一些使用技巧和使用的限制,欢迎收藏观看和评论补充!!!