Maven中resources标签的使用
1. <resources>的作用
官方解释:该元素描述了所有类路径下的资源,如与项目关联的属性文件。这些资源通常被包含在最终包中。
简单理解:resources这个标签用来描述main包下的所有文件(包括java源文件),通过<include>或<exclude>标签
可以选择性的指定最终要打包到target目录下的文件。
2. <resource>(<resources>的子标签,用于描述某些具体资源)下常用子标签
<directory>:用于指定要描述的资源的目录。
<filtering>:默认值为false,为true时表示要用pom中<properties>标签内定义的属性值对被描述资源文件中的占位符进行解析替换。
<includes>:用于指定哪些资源要被加载到最终的类路径下;
<excludes>:用于指定哪些资源不被加载到最终的类路径下;
注意:
使用了<includes>标签且有<include>子标签指定资源时,只有使用了<include>标签指定的资源才会被加载到最终的类路径下;
使用了<excludes>标签且有<exclude>子标签指定资源时,只有使用了<exclude>标签指定的资源才不会被加载到最终的类路径下;
3. 使用例子(用pom中定义的属性替换yml中的占位符)
application.yml 部分内容
spring:
profiles:
active: @profiles.active@
pom.xml 部分内容
<profiles>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
<maven.test.skip>true</maven.test.skip>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 生产环境 -->
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
<maven.test.skip>true</maven.test.skip>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application-${profiles.active}.yml</include>
<include>application.yml</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>