公司采用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包越来越大问题解决相关推荐

  1. Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)

    Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) 参考文章: (1)Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) (2)ht ...

  2. (转)用 Maven 部署 war 包到远程 Tomcat 服务器

    转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html 用Maven部署war包到远程Tomcat服务器 过去我们发布一个Java Web程序通常的做法就是把它打成 ...

  3. maven生成war包的两种方式

    war包即对WEB应用程序进行打包,用于应用容器的部署.如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了.打包方式有很多中,很多工具本身就支持此功能.下面主要介绍通过maven ...

  4. Maven中jar包冲突的解决方式

    现象 创建一个maven工程,引入spring-context包. <dependency><groupId>org.springframework</groupId&g ...

  5. 知识小罐头04(idea+maven+部署war包到tomcat 下)

    上一节新建了一个基本的maven web环境,现在最快速度新建一下springmvc环境! 1.最快搭建springmvc环境 什么叫做最快,当然是怎么简单怎么来啦!由于内容都是很熟悉的东西,serv ...

  6. 170329、用 Maven 部署 war 包到远程 Tomcat 服务器

    过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...

  7. idea引入外部jar,运行项目不报错,使用maven打war包install/package时报程序包不存在等

    项目由于某种特殊原因,需要引入maven中央仓库不存在的jar,这时我们都在WEB-INF/lib下引入,引入外部jar百度一大堆. 我今天碰到是问题是引入jar,项目运行没问题,就是在打war包时报 ...

  8. 使用Maven导出war包

    鼠标右键点击 pom.xml文件 选择 [Run As] ---[Maven build...] 在弹出的对话框中 Goals : clean install Profiles: 什么都不用填写 (生 ...

  9. idea maven打包war包项目

    1.配置打包方式 2.pom文件添加如些依赖, <dependency><groupId>javax.servlet</groupId><artifactId ...

最新文章

  1. 【Qt】Qt发布程序时,报错: could not find or load the Qt platform plugin xcb
  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
  3. 互联网协议 — GRE 通用路由封装协议
  4. java获取object属性值_java反射获取一个object属性值代码解析
  5. PHP考试插件,php秒杀插件?
  6. 删除 索引 外键 mysql_MySQL无法删除外键约束中所需的索引
  7. vscode弹出cmd_先看看 VS Code Extension 知识点,再写个 VS Code 扩展玩玩
  8. 子系统单点登录配置说明
  9. Linux系统管理和维护常用命令
  10. 在华为工作十年的感悟
  11. 回溯法 | 图的m着色问题
  12. 163vip.com登陆TOM邮箱,定位商务人士的专属邮箱!
  13. 用PhotoShop快速给证件照排版
  14. Project 2016中如何管理工时?
  15. 移动硬盘无法被识别怎么办?
  16. 【Java练习】2022个人所得税计算
  17. 震惊,中国历朝历代疆域变迁视频【高清】
  18. java实现第四届蓝桥杯猜灯谜
  19. 60个有用的css代码片段
  20. 最新论文笔记(+19):TrustFed: A Framework for Fair and Trustworthy Cross-Device Federated Learning in IIoT

热门文章

  1. uniapp获取元素的宽度、高度
  2. Symbian屏幕双缓冲DSA
  3. ACM入门指南[转]
  4. ip冲突和双网卡模式
  5. 《Turtle绘图》Python用Turtle库绘制圣诞树、圣诞节考研祝福礼物
  6. Java2实用教程2(第五版)耿祥义课后习题参考答案
  7. 马老师:一个中国人为什么要保护大象?
  8. 二手交易小程序毕业设计,二手物品交易小程序系统设计与实现
  9. 原来他们都是这样治好痉挛性斜颈的
  10. 海潮改正matlab,转:SPOTL(一些海潮负载程序):-安装说明