一、dependencymanagement

1、在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。
2、pom.xml文件中,jar的版本判断的两种途径:

  • 如果dependencies里的dependency自己没有声明version元素,那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version。
  • 如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

3、dependencies和dependencyManagement的区别
      3.1 dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
      3.2 dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

二、parent标签

parent用于引用父工程
1、统一管理jar包的版本,其依赖需要在子工程中定义才有效(比如此例)
2、统一的依赖管理(父工程的,子工程不必重新引入,功能和dependencyManagement类似)
3、控制插件的版本

parent标签一般会和dependencyManagement结合使用,即:

  • 不是全部需要的依赖写在dependencyManagement中,让子项目免除写版本号
  • 共的依赖写在parent的<dependency>中,子项目就不用导入依赖了,因为parent的<dependency>是默认被子项目下载的

三、dependencyManagement与dependencies的区别

dependencyManagement:并不实际引入,要和dependencies结合使用

dependencies:可单独使用,也可结合dependencyManagement使用,当结合dependencyManagement使用的时候,可不写版本号,dependencies在子项目中会自动引入这些依赖

四、dependencyManagement与parent标签的区别

1、dependencyManagement标签

作用就是版本依赖的管理,免写版本号,如果dependencies里的dependency自己没有声明version元素,那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明。

在子项目中不会自动引入这些依赖,子项目如果想使用,还是需要单独引入,但是可以不写版本号(这是dependencyManagement的主要作用),但是如果子项目定义一个新的版本,那么就会覆盖parent的版本。

总结:dependencyManagement作用只有一个,管理依赖的版本号,作用是可以统一依赖

2、parent标签

1、抽象,被子类继承

  • 对于公共的包,在父模块中直接引入,子模块的pom就简单了

2、parent中也可以使用dependencyManagement来管理依赖,那么子模块继承了parent模块之后,就实现不用写部分常用包的版本号了

  • 但是:我们还可以在子模块定义dependencyManagement标签,因为有些在parent中没有,比如Springboot项目的parent中并没有SpringCloud的版本,所以我们需要定义下

3、控制插件的版本

在SpringCloud项目中,我们一般使用两个管理版本间的依赖:

<!-- 管理springboot相关的依赖包版本 -->
<!-- 有了这个配置,我们的pom中引入springboot相关依赖包时就不用写版本号了 -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.12.RELEASE</version><relativePath/>
</parent><!-- 管理SpringCloud相关的依赖包版本 -->
<!-- 有了这个配置,我们的pom中引入springcloud相关依赖包时就不用写版本号了 -->
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

参考:

Maven中dependencies和dependencyManagement的区别

SpringCloud版本规则和原理和在具体项目中的使用 - 杭州胡欣 - 博客园

总结:Springboot的pom配置相关推荐

  1. springboot+druid+mybatis-Plus 配置详解

    网上找了很多关于springboot+druid+mybatis-Plus的配置,遇见的很多问题 也没找到好的解决方案.折腾了好几天终于自己配置通过了. springboot的pom文件 1 < ...

  2. SpringBoot远程访问redis配置,config文件,防火墙,阿里云安全组等

    我这里是连接的阿里云服务器上的redis 1.阿里云服务器的安全组打开6379端口 2. 修改redis.config配置 注释掉 # bind 127.0.0.1 将 protected-mode ...

  3. springboot多环境配置_编辑 SpringBoot|第五章:多环境配置

    多环境配置 在开发应用时,常用部署的应用是多个的,比如:开发.测试.联调.生产等不同的应用环境,这些应用环境都对应不同的配置项,比如swagger一般上在生产时是关闭的:不同环境数据库地址.端口号等都 ...

  4. SpringBoot2.x系列教程11--小花样之SpringBoot其他常用配置

    SpringBoot系列教程11--小花样之SpringBoot其他常用配置 作者:一一哥 一. 修改端口号和访问路径 在Spring Boot 项目中会使用一个全局的配置文件application. ...

  5. Springboot多数据源配置详解

    Springboot多数据源配置详解 概念 配置 多数据源使用 概念 一般来说,我们正常的业务只涉及一个数据源,在特定的业务场景中需要使用多个数据源的情况,就需要配置多个数据源来满足特定的业务需求.本 ...

  6. SpringBoot和SpringCloud配置

    SpringBoot和SpringCloud配置 一.springBoot配置 1.1.yml 1.2.pom 1.3.RestTemplate 二.注册中心 Spring Cloud Eureka ...

  7. springboot快速详细配置搭建

    前言 本文章只局限于springBoot的快速配置搭建,原理部分请阅读本人的另一篇原理剖析的文章,同时本文章会有一部分配置未写入: 1 本文章只介绍本人认为代码量最少的配置 2 有部分配置比较多,以文 ...

  8. 一文搞定:SpringBoot 集成 Apollo 配置中心

    公众号后台回复"面试",获取精品学习资料 扫描下方海报了解专栏详情 本文来源: http://www.mydlq.club/article/42/ <Java工程师面试突击( ...

  9. SpringBoot的基本配置

    ** SpringBoot的基本配置: ** 主程序入口:XxxApplication,使用@SpringBootApplication注解修饰 类加载路径Resource: **配置文件:**以ap ...

最新文章

  1. Java高级特性增强-多线程
  2. mysql注入漏洞语句_mysql注入sleep语句引发的拒绝服务
  3. 解决android模拟器不能访问网络的问题
  4. Struts2 + uploadify 多文件上传完整的例子!
  5. .sh文件是什么语言_FastDFS分布式文件系统的搭建安装
  6. VMware view client for ipad 测试
  7. Zabbix4.2监控nginx状态
  8. Silverlight5.0正式发布附下载地址
  9. 软件测试之 app测试的工具汇总
  10. 【全是干货!伸手党福利】通过银行卡号判断出所属银行信息
  11. openstack(云主机热迁移)
  12. python2到100的素数_python输出2到100之间的素数
  13. 核函数是什么-数据的升维与降维
  14. 安装算量软件快速计算管道管件功能
  15. 重头系统的学习,不会咱就学!2014.6.18
  16. 嵌入式实操----基于RT1170 首板硬件之EEPROM AT24C16调试(十五)
  17. 钙锌复合稳定剂-市场现状及未来发展趋势
  18. 非公经济信息服务公共平台解决方案
  19. c语言打袋鼠游戏,搜狐 袋鼠过河 动态规划
  20. ios15html2canvas截图空白怎么解决

热门文章

  1. Mixpanel使用注意点
  2. Eclipse_Java文件注解乱码
  3. balanced-match 源码解析
  4. web前端培训班有哪些
  5. 原装世嘉土星SS手柄(Sega Saturn)改USB接口,实现低延时USB格斗手柄
  6. 有备无患——数据中心基础设施备品备件管理
  7. 4ARM-PEG-DA 4Arm-PEG-ACRL 四臂PEG丙烯酸酯
  8. IOl流的分类与使用
  9. java程序设计——实验四
  10. STM32串口屏应用