Apache Maven Resources Plugin – Introductionhttps://maven.apache.org/plugins/maven-resources-plugin/
介绍
处理资源⽂件。默认的主资源⽂件⽬录是src/main/resources,很多⽤⼾会需要添加额外的资源⽂件⽬录,比如mybatis的mapper.xml文件,我们习惯把它和Mapper.java放一起,都在src/main/java下面,这样利用maven打包时,就需要修改pom.xml文件,来把mapper.xml文件一起打包进jar或者war里了,否则,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)。
<build>
<finalName>test</finalName>
<!-- 这样也可以把所有的xml文件,打包到相应位置。 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
结构
拷贝main resources到main output directory。它绑定了process-resources生命周期阶段,当执行Compiler:compile插件目标前就会执行此阶段。
<build>
<resources>
<resource>
<directory></directory>
<filtering></filtering>
<includes>
<include></include>
</includes>
<excludes>
<exclude></exclude>
</excludes>
</resource>
<resource>
...
</resource>
</resources>
</build>
<directory>指定资源文件目录
<includes>指定资源文件目录中,仅包含哪些文件被打包
<excludes>指定资源文件目录中,仅哪些文件不被打包
标签<filtering>是一个bool值,默认值为false。指定打包时的配置文件中是否进行变量替换
1.资源文件中使用${keyword}占位符来定义变量, 如
src/main/resouces/application.properties:
application.user=${username}
application.password=${password}
2.这时候可以在pom.xml文件中定义变量的取值
<propertiesx>
<username>mysql</username>
<password>password123</password>
</properties>
3.如果需要对配置文件中变量进行替换实际值,就需要开启<filtering>,该值设置为true。
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application.properties</include>
</includes>
<filtering>true</filtering>
</resource>
打包后, 资源文件src/main/resouces/application.properties
application.user=mysql
application.password=mysql