jar包太大?手把手教你分析 Maven 依赖,完成瘦身优化!
点击关注公众号,利用碎片时间学习
前言
最近在开发一些新系统,昨天发现一个系统的jar包突然变大好多,其他系统几十mb,它246mb,传输起来慢。
突然想到之前看的一篇文章,有程序员把实况足球传到了SVN上,导致war包巨大
我觉得自己项目不至于内置游戏,但可能依赖了多余的jar,所以进行了排查,并解决了jar过大的问题,现在把排查思路记录一下,过程并不难。
排查思路
1.发现问题
使用压缩工具解压jar,到BOOT-INF\lib
下,根据大小排序,发现有一组前缀相同的jar包,体积都超过10mb
2.查看pom依赖
使用IDEA的Maven插件,选择项目后工具栏出现“Show Dependencies
”按钮,点击打开依赖关系图
或者在pom中右键
依赖多了就这样,可以滚轮放大,最左边一侧是pom里写的直接依赖,右面是间接依赖
放大图之后看一下关键字aspose,找到最左侧依赖为xxxx-all
,这个依赖用于处理文件,名字叫xxxx-all
,里面包含了多种处理office工具的包,例如xxxx-excel
、xxxx-word
等
下图是我注释掉其他依赖,得到的一个清晰的图片:
3.分析系统需求
这个包很大,我们真的需要这么多功能吗,据我所知,系统只用到了word、pdf、excel,所以我根据依赖图的第二列,搜索了包路径的前缀,发现只用到了它的word功能
4.去除多余依赖,缩小依赖粒度
所以需要把xxxx-word
以外的依赖去掉,有如下方案
exclusions排除依赖
pom中引入更细的依赖
我用第二种方式,word替换了all
5.测试功能
替换后要测试功能,我实际操作了一下,对应功能依然正常,可以使用,说明没问题
6.jar包大小变化
我分别试了两个项目,一个新项目,和另一个庞大的老项目
第一个jar从246mb变成103mb
第二个jar从386mb变成249mb
效果显著
总结
如果你觉得jar或war包太大,不太正常,可以根据这个思路排除一下多余依赖,我只是排除了一个组依赖jar包就小这么多。如果有时间,可以精益求精,继续瘦身。
这样做有什么好处呢:
传输jar更快了(不论是网络传输还是传到存储介质上)
占空间更小(废话)
打包和启动更快
在idea terminal
使用mvn dependency:analyze
,可以自动分析无用依赖。
感谢阅读,希望对你有所帮助 :)
来源:blog.csdn.net/weixin_43859729/article/
details/113573879
推荐:最全的java面试题库PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
jar包太大?手把手教你分析 Maven 依赖,完成瘦身优化!相关推荐
- jar包过大?手把手教你分析Maven依赖,完美“瘦身”优化!
最近在开发一些新系统,昨天发现一个系统的jar包突然变大好多,其他系统几十mb,它246mb,传输起来慢. 突然想到之前看的一篇文章,有程序员把实况足球传到了SVN上,导致war包巨大.来自" ...
- Spring boot项目打的jar包太大,如何让他瘦下来
为什么会导致jar变大 SpringBoot 部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入 ...
- 解决SpringBoot jar包太大的问题
转载 2017年09月18日 09:21:53 577 SpringBoot的web应用一般都添加了spring-boot-maven-plugin插件. Maven xml代码 <buil ...
- Maven下载jar包太慢!一招教你如何解决
相信很多朋友更新maven项目的依赖时,发现下载jar包太慢了.十几分钟都没有下完,等了很久最后都不能下载完成.这是因为maven项目的中央仓库在外网,下载当然很慢.当然,我也可以换成国内源,这样 ...
- Nature综述:手把手教你分析菌群数据
本文转载自"热心肠先生",己获授权. 导读 自然微生物综述(2017 IF:31.851)于2018年5月23日在线发表了Rob Knight亲自撰写(一作兼通讯)的微生物组领域研 ...
- Pyinstaller打包python文件太大?教你三个小技巧有效减小文件体积
简介 有时候需要在未安装Python环境的平台上运行py程序,使用pyinstaller打包很方便,但打包后的可执行文件实在是太大了.原因在于打包时pyinstaller本就已经关联了很多的pytho ...
- 手把手教你分析解决MySQL死锁问题
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- mysql排插问题_手把手教你分析 MySQL 死锁问题
原标题:手把手教你分析 MySQL 死锁问题 前言 前几天跟一位朋友分析了一个死锁问题,所以有了这篇图文详细的博文,哈哈~ 发生死锁了,如何排查和解决呢?本文将跟你一起探讨这个问题 准备好数据环境 模 ...
- 解决uniapp静态文件字体包太大打包大小超出限制
一.解决uniapp静态文件字体包太大打包大小超出限制 1.在app.vue文件下使用本地文件修改为网络路径 文件大小超过20m可以使用cdn加速我使用unicloud(示例): <style ...
- 学计算机减肥,电脑瘦身(教你一分钟让电脑瘦身)
电脑瘦身(教你一分钟让电脑瘦身) 你的电脑是不是越来越慢? 这里让你10分钟学会给电脑软件瘦身,1分钟了解计算机硬件升级. 电脑运行越来越慢?10分钟学会电脑瘦身 一. 删除Update历史下载数据 ...
最新文章
- Linux内核子系统
- CodeForces 471C MUH and House of Cards
- 企业开发中,git提交时屏蔽某些文件,怎么搞!【idea的处理方法】
- [Hadoop入门] - 1 Ubuntu系统 Hadoop介绍 MapReduce编程思想
- 到底什么是 ROI Pooling Layer ???
- 根据自己平时的经验写的针对SQLSERVER操作的通用类库
- weblogic安装部署 linuxs——wls1036版本
- 2021-09-13Top-N 推荐系统,通常指的是个性化推荐系统,有别于热门推荐。
- [数据结构]树状数组详解
- varbinary mysql_MySQL中的数据类型binary和varbinary详解
- BaseHTTPRequestHandler,HTTPServer
- C语言普通字体转换花体 英文网名神器
- Conflux人物志 | Péter明哲 Marcel马驰
- Apple iPhone 8G手机误升级至2.0降级破解日记
- Windows Kits(Windows 工具包)
- 利用easyX图形库画迷宫问题的路径
- 关于ModbusTCP通讯汇川PLC
- 深度学习巨头—杨立昆
- 计算机应用基础蓝色方框在哪,word段落设置3磅蓝色单线边框并加底纹怎...
- 36页智慧安防小区管控系统解决方案