文章目录
1.为什么要瘦身
通常 Spring Boot 程序在构建的时候会把依赖的jar包也到打包在内部,导致文件大小动辄 50M、100M 这样子,如今迭代发布时常有的事情,每次都上传一个如此庞大的文件,会浪费很多时间,瘦身后会把依赖的jar文件放到jar包外部目录,只需要首次发布的时候需要上传全量文件,后面更新只需要更新源代码编译的jar即可。
2.应用实战
2.1.pom使用的依赖
方便测试只添加了一个web依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.2.打包
执行 mvn clean package 打包应用
应用打包后的相关依赖的jar会被放入jar包内的BOOT-INF/lib目录下,使用WinRAR可以进入jar包内部,或者直接解压jar包
2.3.复制这些jar到项目根路径的release/lib目录下
如下图
2.4.配置打包时忽略依赖
在spring-boot-maven-plugin插件中通过includes标签配置忽略依赖包,需要在configuration.mainClass里面指定应用的启动类,如下。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.ljm.webdemo.WebdemoApplication</mainClass>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
使用mvn clean package打包,可以看到改造前大小为16.5M,改造后大小为113KB了。
2.5.启动jar的时候需要指定LOADER_PATH加载依赖jar
java -Dloader.path=lib -jar webdemo.jar
只针对springboot版本必须在2.3以上,如果不是,请升级。
3.项目配套代码
创作不易,要是觉得我写的对你有点帮助的话,麻烦在gitee上帮我点下 Star
【SpringBoot框架篇】其它文章如下,后续会继续更新。
- 1.搭建第一个springboot项目
- 2.Thymeleaf模板引擎实战
- 3.优化代码,让代码更简洁高效
- 4.集成jta-atomikos实现分布式事务
- 5.分布式锁的实现方式
- 6.docker部署,并挂载配置文件到宿主机上面
- 7.项目发布到生产环境
- 8.搭建自己的spring-boot-starter
- 9.dubbo入门实战
- 10.API接口限流实战
- 11.Spring Data Jpa实战
- 12.使用druid的monitor工具查看sql执行性能
- 13.使用springboot admin对springboot应用进行监控
- 14.mybatis-plus实战
- 15.使用shiro对web应用进行权限认证
- 16.security整合jwt实现对前后端分离的项目进行权限认证
- 17.使用swagger2生成RESTful风格的接口文档
- 18.使用Netty加websocket实现在线聊天功能
- 19.使用spring-session加redis来实现session共享
- 20.自定义@Configuration配置类启用开关
- 21.对springboot框架编译后的jar文件瘦身
- 22.集成RocketMQ实现消息发布和订阅
- 23.集成smart-doc插件零侵入自动生成RESTful格式API文档
- 24.集成FastDFS实现文件的分布式存储
- 25.集成Minio实现文件的私有化对象存储
- 26.集成spring-boot-starter-validation对接口参数校验
- 27.集成mail实现邮件推送带网页样式的消息
- 28.使用JdbcTemplate操作数据库
- 29.Jpa+vue实现单模型的低代码平台
- 30.使用sharding-jdbc实现读写分离和分库分表
- 31.基于分布式锁或xxx-job实现分布式任务调度
- 32.基于注解+redis实现表单防重复提交
- 33.优雅集成i18n实现国际化信息返回
- 34.使用Spring Retry完成任务的重试