# package-optimize **Repository Path**: yqw123/package-optimize ## Basic Information - **Project Name**: package-optimize - **Description**: 优化包创建成功后,存放以后遇到的各种模板、功能和技巧代码 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-03 - **Last Updated**: 2021-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # package-optimize #### 介绍 优化包创建成功后,存放以后遇到的各种模板、功能和技巧代码 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. 更新版本号:在父工程目录下打开WIN命令窗口里面执行操作命令为`version.cmd` 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) # SpringBoot 部署 Jar 文件,瘦身优化指南 ! ## 来源 - 本文截取代码片段来自于对应的完整示例源码工程: - https://gitee.com/xautlx/package-optimize-demo - https://mp.weixin.qq.com/s/Y5VK7TI1TQBN6O-k5O6hng 相关代码和配置均实际执行测试过(基于OpenJDK8环境,其余JDK未做验证,如-Djava.ext.dirs=lib等参数和JDK版本有关,注意对应调整),如在验证过程发现有任何问题可Issue反馈以便及时更正,感谢支持! ## 概要说明 随着Spring Boot的流行,大家体验到只需构建输出一个jar文件,然后只需一个java -jar命令就能部署运行应用的爽快。常见一些单体应用随着项目规模的扩展单个jar文件的大小越来越大,动辄两三百MB。如果再引入微服务架构,动辄一二十个微服务,所有模块jar加起来整个系统光部署文件就一两个GB。 一个系统一旦上线运行,无论新需求迭代还是Bug修复,免不了需要做部署更新,尤其对于一些交付类型项目,首次部署或异地更新, 动不动就需要传输几百MB或几个GB的部署文件,确实是一个让人头疼的问题。 可以想象一下,线上系统发现一个紧急严重Bug捅到了主管那里,交代马上紧急修复解决,研发同事火速分析排查分分钟搞定提交代码并完成构建打包并交付给运维。过一会领导着急上火来过问问题更新解决了吗?运维只能很尴尬的回答:还没呢,部署包文件比较大,正在上传有点慢... 一听领导就火了,就改了几行代码,部署更新为啥要上传几百MB的文件呢?难道没有办法优化一下吗? 一听领导就火了,就改了几行代码,部署更新为啥要上传几百MB的文件呢?难道没有办法优化一下吗? 遇到这样的情况,建议你往下看,或许能找到你想要的答案。 本文内容包括: * 如何把一两百MB的单一Spring Boot jar文件,分离为依赖组件lib目录和一个业务jar来进行部署,优化单个jar文件大小到一两百KB。 * 如何把一二十个微服务高度重叠的依赖组件合并到单一lib目录和多个一两百KB的业务jar来进行部署,优化整个项目部署文件大小从一两个GB大小到两三百MB。 本文内容不包括: * 不包括进行Spring Boot配置文件分离相关,一般简单采用通过指定active profile从外部yaml配置文件覆盖jar文件中配置即可或是采用Nacos等配置服务模式。 * 不包括Maven最佳实践用法,列入样例工程中出于演示方便的考虑比如把一些本应放到各个Boot模块特定的配置声明直接放到顶层的parent中定义,请注意按实际情况优化调整使用。 * 不包括可执行jar的运行模式支持参考,文中实现方式主要面向java -jar运行模式。