这是我昨天问题的后续,有条件地将maven中的一些资源排除在战争之外。我能够重新安排开发和生产战争,但过滤会将目录properties
复制到战争中,尽管根据文档应将其排除在外。我可以使用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>
资源的排除是基于文件的,即它们忽略文件夹。这是因为可能对webResources进行了筛选。
因此,excludes
中的glob将应用于目录中的所有文件,与排除glob匹配的任何文件都将被排除。
但是,您只排除了一个目录。
更改为**/properties/*
或**/properties/**
即可工作。