Maven排除资源文件不起作用。

3

我在谷歌上搜索了我的问题,但没有找到解决方案;我正在使用maven 3.1.2。 我的pom.xml文件中有这个配置文件:

<profile>
            <id>test</id>
            <build>
                <finalName>CustomWebAppName</finalName>
                <resources>         
                    <resource>
                        <directory>src/main/resources</directory>
                        <excludes>
                            <exclude>environmentConfiguration.properties</exclude>
                        </excludes>
                    </resource>
                    <resource>
                        <directory>resourcesTest</directory>
                        <includes>
                            <include>environmentConfiguration.properties</include>
                        </includes>                     
                    </resource>                     
                </resources>                
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.4</version>
                        <configuration>
                            <outputDirectory>testDist</outputDirectory>
                            <warSourceDirectory>WebContent</warSourceDirectory>
                        </configuration>
                    </plugin>
                </plugins>              
            </build>
        </profile>

如您所见,我简单地告诉Maven:当您构建测试配置文件时,请忽略src/main/resources文件夹中的“environmentConfiguration.properties”文件,并考虑resourcesTest文件夹中的同名文件。
当我运行命令“mvn clean install -P test”时,我的最终Web应用程序总是包含位于src/main/resources中的“environmentConfiguration.properties”文件,而不包含resourcesTest文件夹中的同名文件。请问我错在哪里?
以下是由Maven生成的完整调试日志文件,该文件将可用直至2015年11月12日。
谢谢, Angelo

最简单的解决方案是从src/main/resources中删除此文件。如果您需要在测试中使用这些属性,请将其移至src/test/resources。要拥有不同的环境,则配置文件路径是错误的(请参见此处...http://blog.soebes.de/blog/2011/07/29/maven-configuration-for-multipe-environments/). - khmarbaise
我在默认配置文件中使用src/main/resources,因此不想删除它,并且我想使用N个资源的N个配置文件。 - Angelo Immediata
你基于环境的配置文件使用方法是错误的... - khmarbaise
1个回答

3
我不确定这是否是你的问题还是你问题描述中的拼写错误,但在-Ptest之间不应有任何空格。请尝试使用以下代码:
mvn clean install -Ptest

编辑

尝试启用过滤。

<profile>
            <id>test</id>
            <build>
                <finalName>CustomWebAppName</finalName>
                <resources>         
                    <resource>
                        <directory>src/main/resources</directory>
                        <filtering>true</filtering>
                        <excludes>
                            <exclude>environmentConfiguration.properties</exclude>
                        </excludes>
                    </resource>
                    <resource>
                        <directory>resourcesTest</directory>
                        <filtering>true</filtering>
                        <includes>
                            <include>environmentConfiguration.properties</include>
                        </includes>                     
                    </resource>                     
                </resources>                
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.4</version>
                        <configuration>
                            <outputDirectory>testDist</outputDirectory>
                            <warSourceDirectory>WebContent</warSourceDirectory>
                        </configuration>
                    </plugin>
                </plugins>              
            </build>
        </profile>

一开始我还希望我在启动命令时是错的...但可惜只是一个打字错误。同时使用 mvn clean install -Ptest 始终得到相同的结果。 - Angelo Immediata
过滤起作用了吗?过滤和这个没有任何关系。还是错别字本身就是问题的根源? - bezmax
事实上,你是对的,这就是为什么我撤回了我的答案,因为显然它与此无关,问题可能是另一个问题,但如果它起作用... - Amin Abu-Taleb
我也不知道为什么……我只是添加了过滤器,它就起作用了,在pom.xml和命令启动中都没有做其他更改......有时候我们不必问自己原因 :) - Angelo Immediata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接