Java 如何让maven中的资源目录正常工作?

Java 如何让maven中的资源目录正常工作?,java,maven,filter,properties,profile,Java,Maven,Filter,Properties,Profile,我有一个Java Maven web应用程序项目,我正试图清理它。在我的pom.xml部分中,我有以下内容: <build> <resources> <resource> <filtering>true</filtering> <directory>src/main/resources</directory> </res

我有一个Java Maven web应用程序项目,我正试图清理它。在我的pom.xml部分中,我有以下内容:

<build>
    <resources>
        <resource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
    <filters>
        <filter>profiles/${build.profile.id}.profile.properties</filter>
    </filters>
    [...other properties...]
</build>
<profile>
    <id>local</id>
    [...stuff...]
    <properties>
        <build.profile.id>local</build.profile.id> <!-- or qa -->
        [...stuff...]
    </properties>
</properties>
当我在控制台中运行$mvn clean install-Plocal时,出现以下错误:

无法执行目标。。。在project my project上:加载属性文件“/Users/anthony/workspace/my project/profiles/local.profile.properties”时出错

Maven似乎无法识别我的筛选配置文件属性文件的资源目录。这仅在我显式放置属性文件的整个路径时有效,如下所示:

<filters>
        <filter>src/main/resources/profiles/${build.profile.id}.profile.properties</filter>
</filters>

我有没有办法不必显式地声明src/main/resources?我认为我声明一个资源目录的意义在于我可以使用它,特别是用于声明过滤。

资源目录只对正在构建的Java工件具有资源的意义,而对Maven本身没有意义。对于Maven来说,resources目录有一个特殊的含义,即Maven知道在结果jar文件中将这些文件复制到哪里。但是对于Maven处理文件或过滤文件,您必须告诉Maven确切的路径,因为Maven不知道过滤后的文件是资源、源文件还是其他文件。另外,您可以定义多个源目录或资源目录,Maven不知道在哪个目录中进行过滤。因此,始终需要为Maven指定完整路径

因此,简言之:

我有没有办法不必显式地声明src/main/resources

没有