通过使用<packagingIncludes>
和<packagingExcludes>
配置参数,可以在 WAR 文件中包含或排除某些文件。它们每个都采用逗号分隔的 Ant 文件集模式列表。您可以使用通配符,例如**
指示多个目录以及*
指示文件或目录名称的可选部分。
这是一个示例,我们从中排除所有 JAR 文件WEB-INF/lib
:
<project> ... <build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes> </configuration> </plugin> </plugins> </build> ... </project>
有时即使是这样的通配符也是不够的。%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.3.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>
如果您有更多使用正则表达式的真实示例,我们很想了解它们。请使用您的配置在我们的问题跟踪器中提交问题,以便我们可以扩展此页面。