我有一个过滤器文件src/main/filters/base.properties
内容:
testProperty=testValue
我的POM定义了资源,过滤和其他Web资源(使用maven-war-plugin(。它还会覆盖默认筛选分隔符。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/filters/base.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<overwrite>true</overwrite>
<useDefaultDelimiters>false</useDefaultDelimiters>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/more-web-resources</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
所有过滤都适用于位于 src/main/resources
中的文件。但是,位于 src/main/more-web-resources
中的配置文件未正确过滤。因此,如果我有一个文件src/main/more-web-resources/test.properties
,其内容为:
finalTestProperty=@testProperty@
最终的src/main/webapp/test.properties
文件如下所示:
finalTestProperty=@testProperty@
与以下相反:
finalTestProperty=testValue
因此,过滤不适用于使用 maven-war-插件指定的其他 Web 资源。我错过了什么?
好吧,经过一夜的睡眠,我今天早上回到了它,构建了,并且属性正在正确过滤。我确保我的POM和项目结构与我的问题完全匹配,而且确实如此。我可能正在查看原始test.properties
而不是已建成的test.properties
.
为了清楚起见,并解决问题中的评论,我不必在 more-web-resources
目录的<resources/>
部分中定义额外的资源,我不必(重新(指定 maven-war-plugin 配置内另一个<filters/>
部分中的过滤器,也不必(重新(指定 maven-war-plugin 中的@
分隔符。这一切都按照我最初的预期工作,通过使用 POM 标准部分中定义的资源和过滤器,以及 maven-resources-plugin。