栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven - 生成的 jar 包容量变大异常排查

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven - 生成的 jar 包容量变大异常排查

一.引言

使用 mvn package 打包时,对应项目 jar 包正常大小为 70 MB 左右,今天切换分支并简单修改代码后打包大小变为 120 MB 左右,遂开始排查之旅。

二.问题与纠错 1.问题定位

首先直接 vim 查看 jar 包内容,通过比较发现 70M 和 120M jar 包,二者主要相差在 静态文件 上,这些文件为之前版本 resource 文件夹内的文件。

 所以第一步定位完成,jar 包容量增大是因为增加了很多 resource 文件夹内容。

2.问题分析
        
            
                src/main/resources
                
                    ***
                    **/*
                
                false
            
        

项目 maven 中配置了 resources 相关设置,所以 resources 文件夹内文件打到 jar 包为正常现象。经过比对发现新增文件均为之前 resources 文件夹内删除的文件 ,考虑到今天 git checkout 切换到了之前老的分支,而老分支的无关文件还未从 resources 文件夹中删除,因此老文件的引入是切换老分支导致的。

3.问题解决

解决这个问题只需要在新分支 mvn package 前执行 mvn clean,清除 target 文件,随后打包即可恢复新版本删除 resource 文件的小包情况。

未使用 mvn clean 打新包:

使用 mvn clean 打新包:

可以看到未 clean 的包打入 228 个 resources 文件,而 clean 的新版只打入 145 个文件,从而导致了 jar 包的变大。这里 mvn clean 的作用是清除 target 文件夹,由于 ignore 中添加了忽略 ./target,所以切换分支时 target 文件夹不受影响,而 maven 打包的资源来自 target 文件夹下的 class 文件夹:

切换老分支后打包就会保留老的 resources 文件到 classer 文件夹下,所以再切换新分支打包会依然使用 classes 文件夹从而导致 jar 包变大,mvn clean 命令清除 target 文件重新打新包时会将新包的  resources 文件 copy 到 target/class 文件夹下,所以新 jar 包容量变小。

三.总结

在 resources 文件夹修改的情况下,切换新老版本打包发生 jar 包容量异常增加时,执行下述命令即可解决:

mvn clean package

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866002.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号