maven war包打包去除jar包瘦身
1、pom文件配置
1.1 添加maven-dependency-plugin插件用于将引用的jar包拷贝到指定的路径,便于后续tomcat启动指定依赖包路径
<!--拷贝依赖到jar外面的lib目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--指定的依赖路径-->
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
使用这个插件构建完之后的目录结构多了一个lib目录(即上述配置的outputDirectory指定的路径),里面是依赖的jar包:
1.2 添加maven-war-plugin插件
<!-- war包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>
<!--排除具体jar包-->
<!--WEB-INF/lib/commons-io-2.5.jar,-->
<!--WEB-INF/lib/commons-lang3-3.6.jar,-->
<!--排除不是以commons-开头的所有jar包-->
<!--%regex[WEB-INF/lib/(?!commons-).*.*.jar]-->
<!--排除以commons-开头的所有jar包-->
%regex[WEB-INF/lib/(commons-).*.*.jar]
</packagingExcludes>
</configuration>
</plugin>
上述构建配置后打出的war包就会去除掉除war包里/WEB-INF/lib/下面相应的jar包,使得发布包大小变小,加快上传服务器速度,如下图,加压war包,查看WEB-INF/lib目录,没有包含commons开头的jar包,说明已经去除掉了:
原先war包里的结构是包含很多commons开头的jar,如下图:
按照上述思路我们就可以将lib下的所有jar都去掉,去掉依赖jar以后就可以通过配置tomcat引用外部lib路径来部署项目了
附注:
若存在不同版本依赖:比如项目A依赖Y库的1.0版本,项目B依赖Y库的2.0版本,那么可能会出现版本依赖冲突(两个版本不兼容的情况下),解决方案:
1、能做到版本一致就保持使用同一个版本,尽可能保证多个项目使用同一个库的版本一致
2、让项目各自依赖所需的版本并打进war包中,把其他同版本的jar包放在同一个共享包下
测试发现依赖在查找时从上往下找,匹配到就用第一个,如下图会使用comm-0.0.1.jar版本的
springboot 打包插件去除jar包瘦身
maven war包打包去除jar包瘦身的更多相关文章
- maven把项目打包成jar包后找不到velocity模板的bug
使用springmvc 开发时候要实现发送velcotiy模板邮件,在配置正常后,在本地测试正常后,使用maven打包成jar包后,报以下错误, Caused by: org.apache.veloc ...
- springboot 打包插件去除jar包瘦身
1.pom文件配置 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>s ...
- SpringBoot引入第三方jar包或本地jar包的处理方式
在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 第一种是将本地jar包安装在本地maven库 第二种是将本地ja ...
- 【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)
转自:https://www.cnblogs.com/sxdcgaq8080/p/7727249.html 接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p ...
- 【spring boot】6.idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到
接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...
- idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到
接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...
- Maven项目打包,Jar包不更新的问题
问题: 我的maven项目A要打成Jar包A,依赖了另外一个项目B生成的Jar包B.更改了项目B的代码,然后继续打包项目A,生成的Jar包A中并没有我修改了的代码. 原因: Jar包B在开始时被Ins ...
- 【spring cloud】【IDEA】【Maven】spring cloud多模块打包,打包的jar包只有几k,jar包无法运行,运行报错:no main manifest attribute, in /ms-eureka.jar
======================================================================================== 引申:maven打包多 ...
- idea打包SpringBoot项目打包成jar包和war
- 打包成jar包 1. <groupId>com.squpt.springboot</groupId> <artifactId>springbootdemo< ...
随机推荐
- zoj 3724 树状数组经典
问题:n个点,对于每个点i,都有一条连向i+1的有向边,另外有m条其他的有向边,有q个询问(u,v)求u到v的最短路 将m条有向边和q个询问对所表示的点对一起排序,(u,v)u大的排前,u一样的v ...
- 牛客多校第七场 C Bit Compression 思维
链接:https://www.nowcoder.com/acm/contest/145/C来源:牛客网 A binary string s of length N = 2n is given. You ...
- Codeforces Round #381 (Div. 2) C. Alyona and mex(无语)
题目链接 http://codeforces.com/contest/740/problem/C 题意:有一串数字,给你m个区间求每一个区间内不含有的最小的数,输出全部中最小的那个尽量使得这个最小值最 ...
- dp递推 hdu1978
How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- PHP 实现字符串表达式计算
什么是字符串表达式?即,将我们常见的表达式文本写到了字符串中,如:"$age >= 20",$age 的值是动态的整型变量. 什么是字符串表达式计算?即,我们需要一段程序来执 ...
- Netty源码分析 (六)----- 客户端连接接入accept过程
通读本文,你会了解到1.netty如何接受新的请求2.netty如何给新请求分配reactor线程3.netty如何给每个新连接增加ChannelHandler netty中的reactor线程 ne ...
- SpringCloud学习笔记(2):使用Ribbon负载均衡
简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具,在注册中心对Ribbon客户端进行注册后,Ribbon可以基于某种负载均衡算法,如轮询(默认 ...
- thinkphp5.1导出excel文件第三方类库运用
若没安装请到:链接地址 https://www.phpcomposer.com/这里安装 composer 安装过的,cmd切换到项目根目录运行:composer require phpoffice/ ...
- Json的动态解析
最近在项目中需要动态解析json,但解析json的方式有很多,如何合理的解析就是我们需要考虑的问题?比如Newtonsoft.Json.Linq下提供的JToken.JObject等,Newtonso ...
- HBase读延迟的12种优化套
任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少. 总 ...