在maven-war-plugin中过滤不会排除目录

时间:2014-04-16 08:36:44

标签: java maven maven-war-plugin

这是我昨天的问题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>

1 个答案:

答案 0 :(得分:7)

资源的排除是基于文件的,即它们忽略文件夹。这是因为对webResources进行了潜在的过滤。

因此,excludes中的globs将应用于目录中的所有文件,排除匹配排除glob的任何文件

但是,您只排除了一个目录。

更改为**/properties/***/properties/**,它会起作用。