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

热门文章

  1. 视觉工程师的生活是怎样的(二)?
  2. CentOS7.2部署邮件服务器(sendmail)
  3. 【哈哈,我太牛了】被中差评逼出来的终极解决方案!!
  4. 【UBUNTU】深度学习服务器中环境配置问题以及遇到的坑。
  5. 网红泡泡屋,是如何火爆餐饮、民宿及景区市场的?
  6. 左耳听风——笔记四:分布式
  7. 关于子网掩码怎么计算!!!!我终于搞懂了!!!!
  8. PHP代码执行漏洞总结大全
  9. 通信工程专业毕设选题方向【题目推荐】
  10. 安装Jupyter Notebook并配置用于多用户的反向代理(Nginx)