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