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 ...
最新文章
- Python中的标准数据类型
- Java调用Matlab
- c语言数据结构 自测卷答案,《c语言数据结构》第2章 自测卷答案
- oracle数据库教程-张晨光-专题视频课程
- Lamport Logical Clock 学习
- Android如何分析native代码,使用android-ndk-profiler对native代码进行性能分析
- python选课系统作业_Python 大作业4:选课系统
- 网红奶茶雪糕高价背后,到底是真好吃还是智商税
- Linux mysql 允许远程连接
- donet学习笔记10(c#基础)
- 计算机excel混合引用,excel绝对引用、混合引用和相对引用怎么用
- Drupal7学习笔记之Theme感觉非常好转来共享啊!
- norton杀毒软件与木马克星有冲突
- 普通人存多少钱才能不焦虑?
- 日志管理logging的使用
- springboot毕设项目交通违章管理系统58ig4(java+VUE+Mybatis+Maven+Mysql)
- C++课程总结——数论
- (转)私募基金机构设立、牌照申请、后续运营的最新政策规定和操作流程
- openlayers3.20.1发布说明
- db2关闭下一句sql的日志_分析DB2活动日志满的原因及解决DB2日志满方法与避免方案...