为什么 maven-war-plugin 会忽略我为 Web 资源配置的过滤器?
Why is maven-war-plugin ignoring my configured filters for web resources?
我在 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
.
明确地说,为了解决问题中的评论,我不必在 <resources/>
部分为 more-web-resources
目录定义额外的资源,我不必(重新)在 maven-war-plugin 配置中的另一个 <filters/>
部分中指定过滤器,我不必(重新)指定 maven-[ 中的 @
分隔符=20=]-插件。通过使用 POM 标准部分中定义的资源和过滤器以及 maven-resources-plugin,这一切都按照我最初的预期工作。
我在 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
.
明确地说,为了解决问题中的评论,我不必在 <resources/>
部分为 more-web-resources
目录定义额外的资源,我不必(重新)在 maven-war-plugin 配置中的另一个 <filters/>
部分中指定过滤器,我不必(重新)指定 maven-[ 中的 @
分隔符=20=]-插件。通过使用 POM 标准部分中定义的资源和过滤器以及 maven-resources-plugin,这一切都按照我最初的预期工作。