这是我昨天的问题Conditionally exclude some resources in maven from war的后续内容。我能够重新安排开发和生产战争,但是过滤会将目录properties
复制到战争中,尽管它应根据documentation被排除。我可以使用packagingExcludes
选项,但我想知道为什么excludes
不起作用。谢谢你的解释。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<classifier>dev</classifier>
<webappDirectory>${project.build.directory}/${project.build.finalName}-dev</webappDirectory>
<filters>
<filter>${project.basedir}/configurations/properties/config_dev.prop</filter>
</filters>
<webResources>
<resource>
<directory>configurations</directory>
<filtering>true</filtering>
<targetPath>WEB-INF/classes</targetPath>
<excludes>
<exclude>**/properties</exclude>
</excludes>
</resource>
</webResources>
</configuration>
<executions>
<execution>
<id>package-prod</id>
<phase>package</phase>
<configuration>
<classifier>prod</classifier>
<webappDirectory>${project.build.directory}/${project.build.finalName}-prod</webappDirectory>
<packagingExcludes>WEB-INF/classes/*.jks,WEB-INF/classes/acquirer.properties</packagingExcludes>
<filters>
<filter>${project.basedir}/configurations/properties/config_prod.prop</filter>
</filters>
<webResources>
<resource>
<directory>configurations</directory>
<filtering>true</filtering>
<targetPath>WEB-INF/classes</targetPath>
<excludes>
<exclude>**/properties</exclude>
</excludes>
</resource>
</webResources>
</configuration>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:7)
资源的排除是基于文件的,即它们忽略文件夹。这是因为对webResources进行了潜在的过滤。
因此,excludes
中的globs将应用于目录中的所有文件,排除匹配排除glob的任何文件。
但是,您只排除了一个目录。
更改为**/properties/*
或**/properties/**
,它会起作用。