一个 Spring Boot 应用的 jar 包竟然要一百多兆?这就是我接手的项目

2020-08-26 10:25:41 +08:00
 qwerthhusn

Redis

spring-data-redis,spring-data-reactive-redis,Lettuce,Redisson,Jedis 的依赖都有,项目中用的是自己实际封装的 jedis,用途也不复杂。Spring Actuator 好像会检查 Redistribution 连接,是用的 spring-data-redis 的连接检查的,但是因为配置的是自己实际封装的 jedis,所以每次启动都会有 WARN 错误,堆栈一大堆。

MySQL

spring-boot-jpa,mybatis-plus,mysql-jdbc, mariadb-jdba, sqlserver-jdbc 的依赖都有,HirakiCP,ali 的 druid,commmons-dbcp,最后项目中的 DataSource 用的是自己实际封装的 druid,配置文件以二十行。

JSON

json-lib fastjson gson 依赖一应俱全

Log

log4j1 logback commons-logging (没错,不是 Spring Boot 的那个代理成 slf4j 的 commons-logging ) slf4j 依赖一应俱全,有的代码还在用 log4j 1 的 api 。

pom.xml

dependencies 部分,好几十个,各种 exclude 眼花缭乱。关键是有些依赖中央库没有,也没私服,问了,说给你一个本地仓库,指过去就行了,然后去下载上 G 的本地仓库备份 build plugins 部分,各种插件,有用的没用的

Spring Config

没错 @Configuration,xml 都有,入口类上面一大坨注解去 @ImportResource

Controller 类

入参是 HttpServletRequest,自己去取数据

代码

不说了。System.out.println(),e.printStackTrace()满天飞

没错,这就是我接手的项目,而且还只是指提供接口的新项目。

7185 次点击
所在节点    Java
48 条回复
oneisall8955
2020-08-26 11:58:30 +08:00
前后端没分离的 200M 都见过,分离后体积小很多,几十 M 一般
echo1937
2020-08-26 11:58:30 +08:00
这不是体积大小的问题,我接手的时候,都喜欢把冗余无用的依赖和配置尽可能地裁剪掉。
cnxiaowen
2020-08-26 12:02:56 +08:00
正好你慢慢优化 多好呀
zhouyou457
2020-08-26 12:15:09 +08:00
我手上现在这个用了 10 多年的项目包含了 strust1,strust2 和 jfinal 三个框架...其他的框架插件就数不胜数了...

但是打包出来的 war 包也就 80 多 M...

有人可能会问,为啥不重构啊?
答:老板不让重构,原因是牵扯了一大堆的系统,真正的牵一发而动全身...
deplives
2020-08-26 12:16:49 +08:00
说不来你可能不信,我上周刚打包了一坨 500M 的屎
crclz
2020-08-26 12:23:01 +08:00
刚刚创建项目,就直接 50M+了。.Net 也在这个量级。但这个大小也没什么不妥。
sampeng
2020-08-26 12:40:20 +08:00
哦。我们最大的 500…
realpg
2020-08-26 13:11:22 +08:00
无数据库无存储服务器要求扩容硬盘
因为 opt 目录下全是
xxx20080103.jar
xxx20080213.jar
xxx20080213-2.jar
xxx20080213-3.jar
导致硬盘空间不足
lichengzhang2005
2020-08-26 13:33:49 +08:00
服务器真不缺那点空间,一般是先加上再说;我们 php 项目都能搞个几百 M,见怪不怪了。
smilekung
2020-08-26 13:36:21 +08:00
我司有个后台项目 700m 我第一天来的时候都惊呆了
tuboshuv1
2020-08-26 13:39:26 +08:00
我们这边一个项目一个 G
atonku
2020-08-26 13:41:18 +08:00
我觉得挺好的呀,nibuzhizu
unco020511
2020-08-26 14:42:26 +08:00
这还能接受吧我觉得,起码是前后端分离,我最开始在公司转 java 的时候,让我接手 jsp 的项目,这年代居然还有 jsp?(不过我做 java 也是新手)
Heroininu
2020-08-26 14:43:47 +08:00
@qwerthhusn 仔细看了一下你说的内容,的确是多了很多不必要的东西,但是项目运行稳定就足够了,可能不同的人经手有不同的使用习惯加了很多不必要的东西吧。历史包袱重的项目都是这样
zhuangzhuang1988
2020-08-26 14:50:26 +08:00
屎山?小公司的祖传代码才可以叫做屎山。大公司的祖传代码,那是屎海上漂浮的僵屎山。你就在这屎海里面漂着,一旦进来了,就出不去了。每天的工作,就是在粪泳前进。还有拉着部门的粪船前进。各个部门的粪船每天继续产出新鲜的屎,投放到屎海里,它们不断聚集,成为新的屎山。旧的屎山顺着洋流还相互亲热着,迸发出岩浆般热情的屎,掉落在你头上和身边。你不得不一边拼命地游以自保、一边还想尽办法地不沾太多屎到身上。系在你身后的是部门的大船,部门领导坐在船上,用伞和棍子推着避免撞上屎山。偶尔有个负责的领导,还会愿意让你上上船休息。可惜一旦你沾着太多的屎了,或者让船沾着太多的屎了,就等着被踢下船去吧。偶尔有那心有抱负的人,尝试着改变这一切。他们以为找到了一些仿佛可以容易对付的屎山,想着要重构,说他们看到了一条干净的出路。但是,他们还是太年轻了。因为,他们看到的,只是屎山的一角。他们带着部门的船从旁边划过,却不知这就是昨日的泰坦尼克。

作者:知乎用户
链接: https://www.zhihu.com/question/272065178/answer/569614223
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
zhuangzhuang1988
2020-08-26 14:52:53 +08:00
你面对一个巨大的屎山。有的块都发黑变硬了,也有的还新鲜带虾仁的。不要试图了解都是谁拉的他们吃了什么。新需求就撇条新的垛上去。旧 bug 就试试自己拉泡稀的把旧的粘起来拍打拍打能用就行。不要试图去 refactor 什么,敲开硬壳子可能溢出旁边那坨的芯,窟窿越捅越大。什么设计模式代码风格也不用多在意,山上什么样的都有。不行就上手捏出需要的形状 hardcode 。

作者:知乎用户
链接: https://www.zhihu.com/question/272065178/answer/569282825
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
bruce0
2020-08-26 14:53:52 +08:00
我们的一个 go 的项目,引入了一些第三方包,出去文档啥的,差不多 500M 左右
其中有一个夸张的文件 1.8w 行
zhady009
2020-08-26 15:08:27 +08:00
@lichengzhang2005 我想楼主吐槽的不是大小的问题, 一个项目引用各种重复功能的依赖 配置方式不统一
benlyons
2020-08-26 16:06:08 +08:00
我刚接手的也 150M 了, 真的是屎, 注释和文档像开玩笑, 感觉每天都在吃屎. 但是没办法了, 领导逼得紧, 我也只能接着拉了.
knva
2020-08-26 16:37:33 +08:00
你接下来的任务就是找个没人的地方继续拉屎

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701488

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX