通过使用<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。
<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>