背景:常规的应用开发中,不论是单体架构、微服务架构、甚至是服务网格架构,如果你的应用类型采用的是springboot或者springcloud来构建,最终以jar包的方式运行,基本上都会遇到jar包比较大,占用空间比较大的困扰。如果是内网部署,遇到动辄几百MB的升级包,运维的同学直接丢一个眼神给你,如果在外网云环境,那令人着急的带宽分分中会让你生无可恋。此刻boss来个三连击,那种痛,谁碰到谁知晓。
那么,如何避免只修改一行代码就必须要全量打包,不受运维同学的脸色和带宽的压力呢?解决方案是有的。研发的同学可以减少jar的大小。如果把jar从200MB减少为200KB,这速度爽不爽。
本文分享基于Maven的Springboot项目构建的一般瘦身策略,如果有更高效的方式请一定留言告诉我。要想解决问题,先看下执行mvn clean package后,生成的jar包包含什么东西。以下图为例:
在jar包不仅包含了自己编写的应用代码,而且还包含了依赖的外部资源的jar。现在随便一个工程下来,依赖的jar都以MB为计算单位。所以知道了问题之所在,就好解决了。应对之道就是将应用程序编辑的class文件和外部依赖的jar分开。
具体解决实例,包括如何进行配置,本文就不再赘述,这里贴出一些博友分享的实战例子,您可以拿去参考使用。有很详细的配置,以及针对单体架构和多模块依赖架构的优化jar包解决方案。
1、http://www.javashuo.com/article/p-kjmbkjnx-ky.html
2、https://www.liaoxuefeng.com/wiki/1252599548343744/1304267002478625 (廖雪峰的学习网站)
3、http://blog.itpub.net/69900357/viewspace-2686554/ (我把SpringBoot项目从18.18M瘦身到0.18M,部署起来真省事!)。