Maven的pom.xml中resources标签的用法
作者:wenonepiece
pom.xml中resources标签的用法
我们先看一下spring-boot-starter-parent-2.4.1.pom文件中的resources标签,可以直接在Maven仓库中找当然也可以在idea中查看
spring-boot-starter-parent-2.4.1.pom文件中resources标签内容如下:
<build> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/application*.yml</include> <include>**/application*.yaml</include> <include>**/application*.properties</include> </includes> </resource> <resource> <directory>${basedir}/src/main/resources</directory> <excludes> <exclude>**/application*.yml</exclude> <exclude>**/application*.yaml</exclude> <exclude>**/application*.properties</exclude> </excludes> </resource> </resources> </build>
先做一下实验,看一下结果,我们再来给出这个标签的含义是什么
先在maven工程的resources目录下面创建2个配置文件
再修改pom文件,修改内容如下
<!--在properties标签中添加变量test.name--> <properties> <test.name>测试内容test01</test.name> </properties> <!--在build标签中添加resources标签--> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>a.properties</include> </includes> </resource> </resources> </build>
再在a.properties文件中引用pom文件中定义的变量值
a.name=${test.name}
b.properties文件中的内容如下
b.name=${test.name}
打包完成后在target目录下的classes类路径下的内容如下
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>a.properties</include> </includes> </resource> </resources> </build>
从这里可以得出结论:上面这段配置的含义是如果filtering标签的值设置成true,默认值是false,则在工程进行编译打包的时候只会将工程的src/main/resources目录下的includes标签中的资源文件打包进去,并且会进行预编译(就是就将资源文件中引用pom文件中的properties标签中的变量,转化其对应的值),除了includes标签中的资源文件的其它资源文件都不会被打包进去。
再修改pom文件的resources标签
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>a.properties</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <!--filtering标签的值默认是false,在这里可写可不写--> <filtering>false</filtering> <excludes> <exclude>a.properties</exclude> </excludes> </resource> </resources> </build>
进行编译打包,结果如下
<resource> <directory>src/main/resources</directory> <!--filtering标签的值默认是false,在这里可写可不写--> <filtering>false</filtering> <excludes> <exclude>a.properties</exclude> </excludes> </resource>
由此可知这段配置的含义是:在项目进行打包的时候会将src/main/resources目录下除了a.properties资源文件的其它资源文件打包进去,并且这些打包进去的资源文件的内容不会进行预编译,之前是什么样子,打完包之后还是什么样子。
总结
如果项目打包的时候,想对某个资源文件中的内容进行预编译再打包进去,而对其他的资源文件不进行预编译处理打包到项目中,则可以按照如下配置进行处理
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>需要进行预编译的资源文件名称如:a.properties</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <!--filtering标签的值默认是false,在这里可写可不写--> <filtering>false</filtering> <excludes> <exclude>上面includes标签中的资源文件名称如:a.properties</exclude> </excludes> </resource> </resources>
resources标签结合mybatis使用
如果想要将mapper.xml文件和mapper接口同一个包中,并且在项目打包的时候需要作为资源文件也要打包进去,比如项目的结构如下
可以在pom文件中进行如下配置
<build> <resources> <!--将src/main/java目录下的所有xml文件都作为项目的资源文件, 项目打包的时候也会打包进去 --> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <!--将项目的src/main/resources目录下的所有文件都作为项目的资源文件 项目打包的时候也会打包进去 --> <resource> <directory>src/main/resources</directory> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
到此这篇关于Maven的pom.xml中resources标签的用法的文章就介绍到这了,更多相关Maven pom.xml resources标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- IDEA 报Plugin'maven-resources-plugin:'not found 的解决方案
- maven打包插件的使用(maven-compiler-plugin、maven-dependency-plugin、maven-jar-plugin、maven-resources-plugin)
- 解决问题:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources
- Maven中resources标签的用法详解
- Maven项目中resources配置总结
- Maven项目读取resources文件路径问题解决方案
- Maven项目中读取src/main/resources目录下的配置文件的方法