maven工程war包越来越大问题解决
公司采用maven做jar包的管理控制,但伴随着开发会有一些第三方插件的引入,造成工程war包越来越大。
分析war包越来越大的原因:
1、java代码引入的jar包,以及jar包的间接引入(哪怕工程没有间接使用,jar包依然被引入)
2、前端代码引入第三方插件有冗余
3、工程里面有不该存在的大文件
针对这三个问题,依次采用不同的方法处理:
1、jar包引入:
使用Maven analyze来进行分析pom
命令如下:
mvn dependency:analyze
在eclipse中使用命令如图:
点击run运行分析,查看console,
找到以下两个部分的内容,里面会分析出当前java工程、web工程里面有哪些jar包没有在java代码直接使用到,根据这些内容作为参考,可以删除pom里面无用的引用。
Used undeclared dependencies found
Unused declared dependencies found
不懂以上两个命令的,可以查看这篇文章了解一下:通过对Maven的依赖分析剔除无用的jar引用
进行了上面的步骤之后,其实还有一些jar包的依赖没被分析出来,这时候就需要开发者自己根据对项目的了解程度去修改pom文件了,举个例子:我的工程代码里面用到了爬虫,使用jar包为crawler4j:
<dependency><groupId>edu.uci.ics</groupId><artifactId>crawler4j</artifactId><version>4.4.0</version></dependency>
但crawler4j本身引用了其他的jar包,这些jar包我没有使用到,却也打进了war包里面,这时就需要对这些jar包进行排除,使用代码如下:
<dependency><groupId>edu.uci.ics</groupId><artifactId>crawler4j</artifactId><version>4.4.0</version><exclusions><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></exclusion><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion></exclusions></dependency>
对jar包进行排除,需要自己去调整,需要自己多尝试。
2、前端引入插件
前端攻城狮在代码中引入了第三方插件,把插件直接放在了工程里面,而且插件里面明显带有“docs”、“demos”文件夹,这些文件夹里面的东西在工程中根本没有使用到。但在打war包的过程中,这些文件也被写入war中。
解决办法:确定这些文件无用后,直接删除
3、工程里的大文件
工程里面会有没用到的文件,例如图片、二进制文件。我的工程里面,找到了两个图片,这两个图片每个大小为15M,图片的清晰程度非常高,不在正常使用范围内。这个时候,使用ps把图片调整到可接受的程度,图片大小变为500k。
针对每用到的大图片或大文件,删掉即可。
经过以上3步,我的工程war包缩小了三分之一!
war包大小及调整手段:
调整前:127M
使用maven分析jar包后:123M
根据经验删除jar包后:117
再次根据经验删除jar包后:116M
ps调整两个大图片后:87.6M
删除前端插件无用文件后:79.5M
狗年最后一文,晚上离京回家,愿来年猪事顺利!
另:还有可以缩小war包方法,使用代码混淆,理论可以再减少25%jar包,来年有需要的时候继续研究。
maven工程war包越来越大问题解决相关推荐
- Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)
Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) 参考文章: (1)Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) (2)ht ...
- (转)用 Maven 部署 war 包到远程 Tomcat 服务器
转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html 用Maven部署war包到远程Tomcat服务器 过去我们发布一个Java Web程序通常的做法就是把它打成 ...
- maven生成war包的两种方式
war包即对WEB应用程序进行打包,用于应用容器的部署.如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了.打包方式有很多中,很多工具本身就支持此功能.下面主要介绍通过maven ...
- Maven中jar包冲突的解决方式
现象 创建一个maven工程,引入spring-context包. <dependency><groupId>org.springframework</groupId&g ...
- 知识小罐头04(idea+maven+部署war包到tomcat 下)
上一节新建了一个基本的maven web环境,现在最快速度新建一下springmvc环境! 1.最快搭建springmvc环境 什么叫做最快,当然是怎么简单怎么来啦!由于内容都是很熟悉的东西,serv ...
- 170329、用 Maven 部署 war 包到远程 Tomcat 服务器
过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...
- idea引入外部jar,运行项目不报错,使用maven打war包install/package时报程序包不存在等
项目由于某种特殊原因,需要引入maven中央仓库不存在的jar,这时我们都在WEB-INF/lib下引入,引入外部jar百度一大堆. 我今天碰到是问题是引入jar,项目运行没问题,就是在打war包时报 ...
- 使用Maven导出war包
鼠标右键点击 pom.xml文件 选择 [Run As] ---[Maven build...] 在弹出的对话框中 Goals : clean install Profiles: 什么都不用填写 (生 ...
- idea maven打包war包项目
1.配置打包方式 2.pom文件添加如些依赖, <dependency><groupId>javax.servlet</groupId><artifactId ...
最新文章
- 【Qt】Qt发布程序时,报错: could not find or load the Qt platform plugin xcb
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
- 互联网协议 — GRE 通用路由封装协议
- java获取object属性值_java反射获取一个object属性值代码解析
- PHP考试插件,php秒杀插件?
- 删除 索引 外键 mysql_MySQL无法删除外键约束中所需的索引
- vscode弹出cmd_先看看 VS Code Extension 知识点,再写个 VS Code 扩展玩玩
- 子系统单点登录配置说明
- Linux系统管理和维护常用命令
- 在华为工作十年的感悟
- 回溯法 | 图的m着色问题
- 163vip.com登陆TOM邮箱,定位商务人士的专属邮箱!
- 用PhotoShop快速给证件照排版
- Project 2016中如何管理工时?
- 移动硬盘无法被识别怎么办?
- 【Java练习】2022个人所得税计算
- 震惊,中国历朝历代疆域变迁视频【高清】
- java实现第四届蓝桥杯猜灯谜
- 60个有用的css代码片段
- 最新论文笔记(+19):TrustFed: A Framework for Fair and Trustworthy Cross-Device Federated Learning in IIoT