点击关注公众号,利用碎片时间学习

前言

最近在开发一些新系统,昨天发现一个系统的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-excelxxxx-word

下图是我注释掉其他依赖,得到的一个清晰的图片:

3.分析系统需求

这个包很大,我们真的需要这么多功能吗,据我所知,系统只用到了word、pdf、excel,所以我根据依赖图的第二列,搜索了包路径的前缀,发现只用到了它的word功能

4.去除多余依赖,缩小依赖粒度

所以需要把xxxx-word以外的依赖去掉,有如下方案

  1. exclusions排除依赖

  2. pom中引入更细的依赖

我用第二种方式,word替换了all

5.测试功能

替换后要测试功能,我实际操作了一下,对应功能依然正常,可以使用,说明没问题

6.jar包大小变化

我分别试了两个项目,一个新项目,和另一个庞大的老项目

  • 第一个jar从246mb变成103mb

  • 第二个jar从386mb变成249mb

效果显著

总结

如果你觉得jar或war包太大,不太正常,可以根据这个思路排除一下多余依赖,我只是排除了一个组依赖jar包就小这么多。如果有时间,可以精益求精,继续瘦身。

这样做有什么好处呢:

  1. 传输jar更快了(不论是网络传输还是传到存储介质上)

  2. 占空间更小(废话)

  3. 打包和启动更快

idea terminal使用mvn dependency:analyze,可以自动分析无用依赖。

感谢阅读,希望对你有所帮助 :) 

来源:blog.csdn.net/weixin_43859729/article/

details/113573879

推荐:最全的java面试题库PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!

jar包太大?手把手教你分析 Maven 依赖,完成瘦身优化!相关推荐

  1. jar包过大?手把手教你分析Maven依赖,完美“瘦身”优化!

    最近在开发一些新系统,昨天发现一个系统的jar包突然变大好多,其他系统几十mb,它246mb,传输起来慢. 突然想到之前看的一篇文章,有程序员把实况足球传到了SVN上,导致war包巨大.来自" ...

  2. Spring boot项目打的jar包太大,如何让他瘦下来

    为什么会导致jar变大 SpringBoot 部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入 ...

  3. 解决SpringBoot jar包太大的问题

    转载 2017年09月18日 09:21:53 577 SpringBoot的web应用一般都添加了spring-boot-maven-plugin插件. Maven xml代码   <buil ...

  4. Maven下载jar包太慢!一招教你如何解决

      相信很多朋友更新maven项目的依赖时,发现下载jar包太慢了.十几分钟都没有下完,等了很久最后都不能下载完成.这是因为maven项目的中央仓库在外网,下载当然很慢.当然,我也可以换成国内源,这样 ...

  5. Nature综述:手把手教你分析菌群数据

    本文转载自"热心肠先生",己获授权. 导读 自然微生物综述(2017 IF:31.851)于2018年5月23日在线发表了Rob Knight亲自撰写(一作兼通讯)的微生物组领域研 ...

  6. Pyinstaller打包python文件太大?教你三个小技巧有效减小文件体积

    简介 有时候需要在未安装Python环境的平台上运行py程序,使用pyinstaller打包很方便,但打包后的可执行文件实在是太大了.原因在于打包时pyinstaller本就已经关联了很多的pytho ...

  7. 手把手教你分析解决MySQL死锁问题

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  8. mysql排插问题_手把手教你分析 MySQL 死锁问题

    原标题:手把手教你分析 MySQL 死锁问题 前言 前几天跟一位朋友分析了一个死锁问题,所以有了这篇图文详细的博文,哈哈~ 发生死锁了,如何排查和解决呢?本文将跟你一起探讨这个问题 准备好数据环境 模 ...

  9. 解决uniapp静态文件字体包太大打包大小超出限制

    一.解决uniapp静态文件字体包太大打包大小超出限制 1.在app.vue文件下使用本地文件修改为网络路径 文件大小超过20m可以使用cdn加速我使用unicloud(示例): <style ...

  10. 学计算机减肥,电脑瘦身(教你一分钟让电脑瘦身)

    电脑瘦身(教你一分钟让电脑瘦身) 你的电脑是不是越来越慢? 这里让你10分钟学会给电脑软件瘦身,1分钟了解计算机硬件升级. 电脑运行越来越慢?10分钟学会电脑瘦身 一. 删除Update历史下载数据 ...

最新文章

  1. Linux内核子系统
  2. CodeForces 471C MUH and House of Cards
  3. 企业开发中,git提交时屏蔽某些文件,怎么搞!【idea的处理方法】
  4. [Hadoop入门] - 1 Ubuntu系统 Hadoop介绍 MapReduce编程思想
  5. 到底什么是 ROI Pooling Layer ???
  6. 根据自己平时的经验写的针对SQLSERVER操作的通用类库
  7. weblogic安装部署 linuxs——wls1036版本
  8. 2021-09-13Top-N 推荐系统,通常指的是个性化推荐系统,有别于热门推荐。
  9. [数据结构]树状数组详解
  10. varbinary mysql_MySQL中的数据类型binary和varbinary详解
  11. BaseHTTPRequestHandler,HTTPServer
  12. C语言普通字体转换花体 英文网名神器
  13. Conflux人物志 | Péter明哲 Marcel马驰
  14. Apple iPhone 8G手机误升级至2.0降级破解日记
  15. Windows Kits(Windows 工具包)
  16. 利用easyX图形库画迷宫问题的路径
  17. 关于ModbusTCP通讯汇川PLC
  18. 深度学习巨头—杨立昆
  19. 计算机应用基础蓝色方框在哪,word段落设置3磅蓝色单线边框并加底纹怎...
  20. 36页智慧安防小区管控系统解决方案

热门文章

  1. php 利用gd库及tcpdf 自动多图片生成pdf
  2. 金庸武侠小说之我的见解
  3. 编程实现英文数字到中文大写数字的转换
  4. android当电脑麦克风,电脑没有麦克风?让手机充当电脑麦克风!
  5. Kubernetes 学习总结(27)—— Kubernetes 安装 Redis 集群的两个方案
  6. 专注网格剖分 - TetGen,NETGEN,Steller
  7. 油猴插件安装以及好用的脚本推荐
  8. 蓝桥杯2013第四届 第四题39级台阶
  9. 99乘法表,读写文件,函数
  10. Mysql数据库入门 (基础知识点 由来 各种指令 如何运用)