Maven的pom.xml中resources标签的用法
Maven学习笔记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>
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>
更多推荐
所有评论(0)