前面一片文章是说关于如何创建springboot项目,有三种方式,但是这三种方式中项目的pom文件中都有parent标签,我们来看看parent标签中的内容有哪些

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version></parent>

可以很清楚的知道,内容不就是跟普通的依赖包没什么两样嘛,就是一个springboot的依赖,可是这个parent还有其他的功能哦,下面总结一下都有哪些功能
1、定义了 Java 编译版本为 1.8 。
2、使用 UTF-8 格式编码。
3、继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写4、依赖时才不需要写版本号。
5、执行打包操作的配置。
6、自动化的资源过滤。
7、自动化的插件配置。
8、针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
请注意,由于application.properties和application.yml文件接受Spring样式占位符 $ {…} ,因此 Maven 过滤更改为使用 @ … @ 占位符,当然开发者可以通过设置名为 resource.delimiter 的Maven 属性来覆盖 @ … @ 占位符。

源码分析
当我们创建一个 Spring Boot 项目后,我们可以在本地 Maven 仓库中看到看到这个具体的 parent 文件,以 2.1.4 这个版本为例,这里的路径是 C:\Users\sang.m2\repository\org\springframework\boot\spring-boot-starter-parent\2.1.4.RELEASE\spring-boot-starter-parent-2.1.4.RELEASE.pom ,打开这个文件,快速阅读文件源码,基本上就可以证实我们前面说的功能,如下图:

我们可以看到,它继承自 spring-boot-dependencies ,这里保存了基本的依赖信息,另外我们也可以看到项目的编码格式,JDK 的版本等信息,当然也有我们前面提到的数据过滤信息。最后,我们再根据它的 parent 中指定的 spring-boot-dependencies 位置,来看看 spring-boot-dependencies 中的定义:

在这里,我们看到了版本的定义以及 dependencyManagement 节点,明白了为啥 Spring Boot 项目中部分依赖不需要写版本号了。

不用 parent的话

但是并非所有的公司都需要这个 parent ,有的时候,公司里边会有自己定义的 parent ,我们的 Spring Boot 项目要继承自公司内部的 parent ,这个时候该怎么办呢?

一个简单的办法就是我们自行定义 dependencyManagement 节点,然后在里边定义好版本号,再接下来在引用依赖时也就不用写版本号了,像下面这样:

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.1.4.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

这样写之后,依赖的版本号问题虽然解决了,但是关于打包的插件、编译的 JDK 版本、文件的编码格式等等这些配置,在没有 parent 的时候,这些统统要自己去配置。

Spring Boot中的parent标签相关推荐

  1. Spring Boot中parent标签的作用

    在Spring Boot的官方示例中,都是让我们继承一个spring的 spring-boot-starter-parent作为parent标签 <parent><groupId&g ...

  2. Spring Boot中使用时序数据库InfluxDB

    除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB.LDAP这些存储的案例.接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在 ...

  3. Spring Boot中使用RabbitMQ

    很久没有写Spring Boot的内容了,正好最近在写Spring Cloud Bus的内容,因为内容会有一些相关性,所以先补一篇关于AMQP的整合. Message Broker与AMQP简介 Me ...

  4. Spring Boot中文文档

    1.5.2.RELEASE Part I. Spring Boot 文档 本节简要介绍了Spring Boot文档,是整个文档的参考指南. 您可以完整阅读本参考指南,或者如果您不感兴趣的话可以跳过该部 ...

  5. Spring Boot 中关于 %2e 的 Trick

    作者 | Ruilin 来源 | http://rui0.cn/archives/1643 分享一个Spring Boot中关于%2e的小Trick. 先说结论,当Spring Boot版本在小于等于 ...

  6. spring boot中利用mybatis-generator插件生成代码

    使用Idea在spring boot中集成mybatis-generator,自动生成mapper.xml  model  dao 文件 一.配置 pom.xml 在pom.xml的<plugi ...

  7. 在Spring Boot中使用配置元数据来配置您的配置

    Spring Boot 1.3.0中发布了许多更新,但是其中一个对我很突出,因为我以前并不了解此更新,它的状态使其成为一项真正有用的功能(不幸的是,撰写本文时仅在Spring Boot中可用)这个). ...

  8. Spring Boot中的事务管理

    什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并 ...

  9. 如何把网上下载的前端页面在Spring Boot中跑起来(CSS,JavaScript,程序运行等路径设置)

    这个功能非常有用,估计99.99%的java web开发者都干过,本人是初学者,特写这个博客记录下! 方便本人以后查阅,方便以后进行投机取巧 这里使用thymeleaf模板引擎! 在网上下载了一个Bo ...

最新文章

  1. 这场编程语言的发布会,不参加可太亏了!
  2. CPU执行指令过程与python
  3. Fragment之一:基本原理
  4. Delphi – 我的代码之简单五子棋
  5. python tableview绑定字典_在QTableView中使用各种自定义委托
  6. HashMap,TreeMap,Hashtable,LinkedHashMap的区别
  7. 【微信开发第三章】SpringBoot实现微信授权登录
  8. Excel图表制作(二):下拉菜单实现动态图表
  9. Layaair 3D场景使用
  10. 直击六大会场 | 洞察100+创新实践,2018TOP100summit圆满落幕!
  11. 2020年排名前10的Python库
  12. LIEF:修改安卓.so后报 dlopen failed:has invalid shdr offset/size
  13. 软件测试概念-PIE模型
  14. 上海领科作为A-Level领军学校,为什么要开设IB课程?
  15. 重写Math 中sin cos asin  acos 方法,将其入参或者返回值 从弧度改为角度
  16. SVD法坐标系转换原理
  17. 基于localstorage实现增删改查功能
  18. 字长16位的计算机 它表示是,计算机应用基础(第2版)在线作业
  19. 神器-可视化分析之Basemap实战详解(二)
  20. SD-WAN,让你的组网更灵活

热门文章

  1. 如何提高CSDN博客的访问量
  2. 树莓派智能音响项目——snowboy语音唤醒初探
  3. 少林绝技是不评成果的—成果导向应当废除
  4. SIFS DIFS PIFS EIFS
  5. 复旦投毒案宣判:嫌犯表情漠然 对死刑反应淡定
  6. Oracle 19c使用dbca来搭建物理DG--主rac备rac
  7. 算法补天系列之——前缀树+贪心算法
  8. scrapy连接MySQL数据库爬取英雄联盟英雄传记
  9. Pandas:波浪号“~”在 pandas 中的用法
  10. 程序员杂记:奋战在青青网吧!