写在前边的话:
在用项目打包时,每次都会把那些固定的、不会轻易改变的文件(项目引用的Jar包、样式等)打到war包中,十分浪费时间,尤其是上线项目时。向服务器上传程序包,会白白的耗费好多时间。
那么有没有一种行之有效且简单方便的方法解决这个问题呢?
别锤别锤,答案肯定有啊!要不我在这费这大劲码字干嘛?
在配置pom文件时可以通过<packagingIncludes>
或<packagingExcludes>
参数对最终打包文件实现过滤、包含操作。并且支持正则表达式实现过滤规则,多个过滤条件之间使用逗号","
分隔,支持"*"
通配符。
过滤掉所有jar包
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
该种配置,使用了"*"
通配符,在执行mvn package
时不会将WEB-INF/lib
下的jar包文件打包。
有时候如果只是使用通配符并不能迎合开发中的某些需求,这时候可以使用强大的正则表达式
。如下
使用正则和通配符过滤特定的jar包
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<!--
Exclude JCL and LOG4J since all logging should go through SLF4J.
Note that we're excluding log4j-<version>.jar but keeping
log4j-over-slf4j-<version>.jar
-->
<packagingExcludes>
WEB-INF/lib/commons-logging-*.jar,
%regex[WEB-INF/lib/log4j-(?!over-slf4j).*.jar]
</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
这种情况也是比较常用的。上边这个配置中,实现的需求是排除以commons-logging-
开头的所有jar包和log4j-<version>.jar
格式的所有jar包(不会排除log4j-over-slf4j-<version>.jar
这种格式的jar包)
...
算了,不贴图了...go home..
我可以对一个人无限的好,前提是值得。 ——慕冬雪
热门评论
次次都需要打包一些固定不变的包,确实浪费了;但是,要整体发布工程war包的话,排除掉这些固定不变的jar包,工程不就有丢包问题了吗,这个问题,应该如何解决