在Maven的生命周期中有一步是对资源的处理,还记得吗?
中间红框就是
maven-resources-plugin
插件对项目主资源文件的处理。
maven-resources-plugin
插件
它默认的行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录中。
不过只要通过一些简单的POM配置,该插件就能够解析资源文件中的Maven属性,即开启资源过滤。
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
如果想仅仅对资源文件中的某几个文件进行资源过滤,或者将某几个文件排除资源过滤的话,并不能简单地使用 include
或 exclude
,而是需要配合着使用。
仅对 yml 文件进行资源过滤
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/**.yml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/**.yml</exclude>
</excludes>
</resource>
</resources>
其中第一个 <resource>
配置表示,在src/main/resources
目录下,只有yml文件是资源文件,并且进行资源过滤。
第二个<resource>
配置表示,在src/main/resources
目录下,除了yml文件外都是资源文件,但是不会被资源过滤。
对fonts
目录下的所有文件排除资源过滤
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/fonts/*.*</exclude>
</excludes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/fonts/*.*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
或许将 filtering
标签挪动到 excludes
和 includes
后面,更能表达配置意图。