序
桌面应用很多都能后台自动更新, 而springboot,或者使用tomcat部署,或者jar部署
要搭建个自动化的发布部署需要很多很复杂,所以有了这个简单的方法来摆脱多服务器的部署需求
自动更新的整个流程
- 定时检查有没有更新
- 读取本地jar文件中的版本号,和线上版本对比,有更新就开始下载
- 下载后对下载文件进行大小验证,判断是否下载成功
- 对文件进行解密处理
- 校验文件的SHA1是否一直
- 关闭当前系统
- 复制下载好的更新文件到运行目录,重启启动系统
- 完成更新
1.检查更新,对比版本号
我们在打包生成jar时,同时根据打包后的jar的信息,生成一个latest.json
如下
{
"fileSize": 109225562,
"packageUrl": "http://xxx/update/packages",
"publishTime": "2021-02-22 14:46:10",
"sha1": "fa3272a2167164e30b6ac9728346392ab1f5ac81",
"version": "202102220641"
}
在里面有更新的主要信息,比如版本号,更新包的下载地址,发布时间,用于校验的文件大小和SHA1
@Scheduled(cron="0 0/10 * * * ?") //每10分钟检查一下有没有更新
public void checkUpdata(){
String res=HttpUtil.get(updateUrl);//updateUrl就是服务器上latest.json
if(StringUtils.isNotBlank(res)){
UpdataJson updataJson= JSON.parseObject(res,UpdataJson.class);
if(updataJson!=null){
log.error(updataJson.toString()