我在src/main/filters/base.properties
中有一个包含内容的过滤器文件:
testProperty=testValue
我的POM定义了资源,过滤和其他网络资源(使用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-plugin指定的其他Web资源。我错过了什么?
答案 0 :(得分:0)
嗯,经过一夜的睡眠,我今天早上回到了它,建造了,并且正在正确过滤这些属性。我确保我的POM和项目结构与我的问题完全匹配,确实如此。我可能正在查看原始test.properties
而不是内置的test.properties
。
要明确并解决问题中的评论,我不必在<resources/>
部分中为more-web-resources
目录定义其他资源,我没有必要(重新)在maven-war-plugin配置中的另一个<filters/>
部分指定过滤器,我不必(重新)在maven-war-plugin中指定@
分隔符。通过使用POM标准部分中定义的资源和过滤器以及maven-resources-plugin,它完全按照我最初的预期工作。