由于现在绝大多数服务都采用spring boot,且在打包时一般选择全量包的形式,因此在服务依赖比较多的情况下,更新/添加其中的一个文件时,会造成很大的麻烦,比如一个服务打完包后,jar文件的体积可能在200M左右,因此在网络条件不好的情况下,频繁更新服务包还是比较麻烦的事情,因此适时进行增量更新,是比较好的方法,也是在应对网络条件不好时的最好选择。
在windows下增量更新可以参考文章。
javascript:void(0)
文章中需要注意的是,在将增量包装入压缩软件后,压缩方式要改成 存储
Linux下要实现增量更新相对麻烦一些,因此要使用到jar命令,对,就是jar命令,不是java命令。
jar命令也是jdk提供的一个命令行工具。
这里我们以Eureka-Server为例,上传eureka-server.jar到linux服务器,并启动!
可以看到启动端口时8081。
如果我们需要修改启动端口,可以通过命令行(-D)的形式,也可以更新application.yml文件
这里我们使用第二种方式,首先修改application.yml。
server:
port: 9999
context-path: /
spring:
application:
name: Eureka-Server
eureka:
client:
register-with-eureka: false
fetch-registry: false
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${server.port}
这里我们把端口修改为9999。
此时我们重新创建一个路径,并将原来的eureka-server.jar和新的application.yml放到创建好的路径中去。
使用命令解压jar包
jar -xvf eureka-server.jar
结果如下
此时将新的application.yml替换到 BOOT-INF/classes/ 下
此时路径下内容
接下来执行打包命令
jar -cvf0M eureka-server-new.jar . (重新压缩,-0是主要的)
这个命令将打出一个eureka-server-new.jar
此时启动eureka-server-new.jar。
java -jar eureka-server-new.jar
可以看到新打好的jar包已经在新端口上启动。
此时看看我们的路径下有什么
发现 eureka-server-new.jar的大小比eureka-server.jar大不少。
我们再次新建一个路径,并将eureka-server-new.jar移动到新路径下,然后使用上面的命令解压eureka-server-new.jar看看里面有什么
我们发现eureka-server.jar在eureka-server-new.jar中,因此eureka-server-new.jar包体积增长了不少。
那么我们重新回到刚才的路径,并且删除eureka-server-new.jar。
此时执行命令
jar -cvf0M eureka-server.jar .
此时路径下文件
我们发现新打的eureka-server.jar与原始eureka-server.jar在体积上差异不大
然后启动eureka-server.jar
发现端口已经更新为9999
jar命令用法
-c 创建新的归档文件
-t 列出归档目录和文件
-x 解压缩已归档的指定(或所有)文件
-u 更新现有的归档文件
-v 在标准输出中生成详细输出 / 提供更详细输出信息
-f 指定归档文件名 / 为压缩包指定名字
-m 包含指定清单文件中的清单信息
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储,不压缩,只是打包;不使用任何 ZIP 压缩
-M 不创建条目的清单文件 META-INF/MANIFEST.MF
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含其中的文件
列出指定文件的路径:
jar -tvf eureka-server.jar | grep application.yml