版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fly910905/article/details/84946029
通过使用<packagingIncludes>和<packagingExcludes>配置参数,可以在WAR文件中包含或排除某些文件或者目录。
可以通过逗号分隔,配置多个文件或者目录路径。
使用**等通配符表示多个目录,使用*表示文件或目录名称的可选部分。
**:可以删除当前文件夹和文件夹里的内容
示例1:从WEB-INF / lib中排除所有JAR文件
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
示例2:排除resource文件或者只包含Java文件
WEB程序结构如下:
使用以下配置,我们可以排除resource里的配置文件或者只包含Java文件
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<!--注意:这是打包后的路径-->
<!--
**:可以删除当前文件夹和文件夹里的内容
-->
<packagingExcludes>
<!--排除resources下面的config文件中的properties文件-->
<!--WEB-INF/classes/config/*.properties-->
<!--排除resources下面的config文件和config里面的文件-->
WEB-INF/classes/config/**
</packagingExcludes>
<!--只包含com和com下面的所有文件夹和文件【即,只打包Java文件】-->
<!--<packagingIncludes>
WEB-INF/classes/com/**
</packagingIncludes>-->
</configuration>
</plugin>
示例3:正则表达式排除文件
有时甚至这样的通配符还不够。在这些情况下,您可以使用%regex []语法的正则表达式。
在此示例中,我们要排除任何commons-logging和log4j JAR,但我们不希望排除log4j-over-slf4j JAR。
所以我们要排除log4j- <version> .jar,但保留log4j-over-slf4j- <version> .jar。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</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>