在开发当中,我们一般打包都是利用maven打包的,在项目当中我们经常会看见resources标签,可能很多人对这个标签并不是很理解,本篇文章主要详细记录resources标签的用法。

可能写的比较多,但是都是我亲自做实验,边做实验边记录的。看完相信你肯定能理解的。

目录

  • 一、resources作用
    • 1、打包编译作用
    • 2、配置文件取pom当中的值
  • 二、演示resources打包编译的作用
    • 1、创建springboot项目
    • 2、进行编译打包
    • 3、出现问题
    • 4、得出结论
    • 5、添加resources进行解决
  • 三、演示application取pom当中值
    • 1、创建springboot项目
    • 2、进行编译打包
    • 3、得出结论
    • 4、添加resources进行解决
    • 5、疑问

一、resources作用

1、打包编译作用

在项目当中进行编译的时候,他默认是不会对某些文件进行编译的,例如在java文件夹下的mybatis当中的.xml文件,还有在resources文件夹当中有时候会存储一些资源文件,默认有些也是不进行编译的,这里的不进行编译指的是他不会编译到target文件夹当中,并且打包也是。

我们在正常开发项目的时候,有时候获取资源是获取的编译后的路径地址,他会在编译后的路径找不到文件(target文件夹),就是这个原因。

这时候就需要用到resources标签,在pom.xml添加,告诉maven我这些文件也需要编译,并且打包的时候需要打包进去。

2、配置文件取pom当中的值

在现实开发当中,我也遇到过,在pom文件当中配置参数,然后通过application.properties使用@@来进行取pom的值。假如我不想用application.properties取值,而是用了新创建的比如a.properties取值,这时候就需要在pom当中配置resources。

下面经过示例直接演示。

二、演示resources打包编译的作用

1、创建springboot项目

这里我创建了个空项目,然后resources当中加了很多空文件,java当中也是加了一个文件,pom.xml我是没有动的,现在开始编译打包测试。

看看哪些文件在编译过后,会丢失。

2、进行编译打包

mvn clean install 一下:

这个是编译后的,可以看出来在java文件夹当中,我添加了a.fxml文件,但是编译过后却丢了。(注意:这里的fxml文件只是演示,总之不是java文件,也可能xml等文件

3、出现问题

这里我打的jar包,将包解压之后发现和target当中的classes一模一样。同样是缺少那个a.fxml文件。

4、得出结论

1、假如pom.xml不加resources,编译出来的会丢失文件,这也就是很多情况下,我们在本地电脑运行没有问题,但是一旦打包到服务器,会发现项目根本跑不起来,缺少各种文件,有时候就是这个原因。

2、target当中的classes和打出来的包解压后的classes是一模一样的。

5、添加resources进行解决

这里的配置代表的是,我要将src/main/java路径下.fxml文件结尾的,编译打包进去。

当有两个同类型文件,只想打包进去一个文件,可以在include标签当中指定文件名称。

<build><resources><resource><directory>src/main/java</directory><filtering>true</filtering><includes><include>**/*.fxml</include></includes></resource></resources>
</build>

添加这个配置之后,再进行编译打包,会发现以下问题:
view当中的文件打包进来了,但是resources文件下的文件夹和文件全丢了。

解决

告诉maven,resources文件下的全部要进行编译。

<build><resources><resource><directory>src/main/java</directory><filtering>true</filtering><includes><include>**/*.fxml</include></includes></resource><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources>
</build>

从这里可以看出来,现在我项目当中的文件都打包进来了。

三、演示application取pom当中值

1、创建springboot项目

pom配置文件我添加了一个port设置。

<properties><java.version>1.8</java.version><port>8081</port>
</properties>

项目里面我添加了一个a.properties文件。a.properties和application.properties当中我都设置了:

server.port=@port@

目的:就是让配置文件的port去读pom.xml当中设置的port值。

2、进行编译打包

编译打包后会发现,a.properties没有变化,而application.properties却变成了maven当中设置的值。

3、得出结论

我这里用的是springboot2.6.2,不管是哪个版本都可以点进去,我们点进去观察。

从这里可以看出,springboot依赖当中,其实已经将application.properties给配置了。

也就是a.properties没有进行配置,所以取不到值,而application.properties配置了,所以取到值了。

4、添加resources进行解决

目前问题是假如我想让a.properties也一样可以取到值。

通过添加以下配置即可:

<resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource>
</resources>

注意:

这里的filtering一定要设置为true,假如为false,我们配置文件当中用到了@@取pom的值,会取不到。

实际上,他是在编译过后就把application当中的值给替换了,替换成了pom当中配置的值,而并非是程序当中获取的时候,他才动态去获取pom当中的值。

5、疑问

可能有的人会感觉好奇,为什么不这么配置,其实我也试了,只不过这么加的话,resources当中的文件就丢了,只剩下a.properties了。

<resources><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>a.properties</include></includes></resource>
</resources>

总结:一旦pom当中添加resources,指定某一个文件,就会导致resources其他文件打包的时候丢失,这两个例子其实都 体现 出来了。

Maven当中resources标签的用法相关推荐

  1. maven pom resources标签的使用示例

    将*.fxml打包进jar中 <build><resources><resource><!-- 这里是放在 src/main/java--><di ...

  2. maven只打包java目录_ssm项目中maven对resources目录打包的路径_默认路径,自定义路径...

    博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): ssm项目打包后mybatis的mapper.xml文件没有放进去 问题出现的原因: ssm项目打包后mybatis的m ...

  3. html section 布局,section标签的用法

    标签的用法 由于昨晚发了一篇文章 http://www.zcool.com.cn/article/ZMzA3MzI=.html ,有一个网友评论问 的用法.所以现在举例来说明一下: html5引入了标 ...

  4. 注册为Linux服务,docker部署,dockerfile,spring boot测试监控,actuator,项目远程访问,maven的scope标签

    1. 项目注册为 Linux服务 可以开启 关闭 开机启动 mvn package java -jar xxxx.jar pom加executable <build><plugins ...

  5. php中 datalist,html5 datalist标签的用法是什么?这里有datalist标签的用法实例

    本篇文章主要为大家讲述了关于html5 datalist标签的用法及html5 datalist标签的用法实例.本文说了两个常用的选项框的实例供大家选择观看,下面就让我们一起来看这篇文章吧 我们先来看 ...

  6. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...

  7. VTK:标签轮廓用法实战

    VTK:标签轮廓用法实战 程序输出 程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkActor2D.h> #

  8. php中的ol标签,html5中ol标签的用法详解

    这篇文章主要介绍了详解HTML5中ol标签的用法,是HTML5入门学习中的基础知识,需要的朋友可以参考下 定义和用法 标签定义有序列表. HTML 4.01 与 HTML 5 之间的差异 在 HTML ...

  9. html中iframe标签的用法详解

    <iframe>是什么?html中iframe标签的用法详解 原创  2018-10-26 10:24:35 03690 经常进行页面布局的人对于HTML中的iframe标签一定不 ...

最新文章

  1. 红黑树 键值_查找(一)史上最简单清晰的红黑树讲解
  2. [PHP] 多表外连接性能测试及优化
  3. 钉钉在线求饶?五星分期付款?爬取钉钉App Store真实评价数据并分析
  4. 【渝粤教育】国家开放大学2018年秋季 0179-21T数据库基础与应用 参考试题
  5. PAT 1051-1060 题解
  6. 《Kotlin项目实战开发》第1章 Kotlin是什么 1
  7. iWebOffice2015入门(一)
  8. ElementUI Select选择器下拉框样式修改
  9. 周立功DTU+温度传感器,ZWS物联网平台尝试
  10. 维基百科中文语料建模
  11. 西门子杯大赛比赛总结与体会
  12. PostGreSQL语法及高级功能(2022-06-08补充中)
  13. {转}tbl语言简介
  14. AES解密类,解密案例 解决No matching distribution found for Crypto
  15. python黑科技自动p图_自动P图神器来了,这些逆天小程序!
  16. 虹膜识别—DeepIrisNet2
  17. 中文英文翻译-英翻中文在线翻译
  18. 小米6X计算机在后台程序无法关闭,小米6怎么关闭后台程序教程
  19. 【Python百炼成魔】魂圣初入Python之Python最佳入门实践
  20. 论文笔记:Improving Grammatical Error Correction Models with Purpose-Built Adversarial Examples

热门文章

  1. React Hooks 分享
  2. 你不知道的电脑36个小技巧(纪念2011教师节)
  3. 2019年的学习计划
  4. Android获取UI控件的宽高
  5. 杭电计算机专业期末考试助攻,杭电嘻哈:舶来文化亦可玩出小清新
  6. cpuz测试分数天梯图_PC电脑桌面CPU天梯图2020 单路CPU性能排名
  7. 目前从事工作的想法和建议
  8. Problem -B DBZ的钥匙
  9. 奇葩问题☞ npm install 报错 gyp ERR
  10. 保护眼睛的颜色和各种背景颜色设置方法