dependencyManagement(以下简称:《依赖管理器》)

《依赖管理器》简介

Maven中的《依赖管理器》元素提供了一种管理依赖版本号的方式。在《依赖管理器》元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找拥有《依赖管理器》元素的项目,然后使用它指定的版本号。

注意:
《依赖管理器》中的依赖必须明确的指定依赖版本号,不然子模块引入该依赖后,将继承父模块《依赖管理器》中的设置,如果父模块的《依赖管理器》中没有设置依赖的版本号, 会导致子模块无法下载该依赖。

《依赖管理器》作用就是用来统一管理依赖版本号的,所以在父模块中可以添加所有子模块需要用到的依赖,然后统一指定版本号。子模块引入依赖时会继承父模块《依赖管理器》中设置的版本号设置。注:《依赖管理器》不会下载它里面配置的依赖。

例外:
上面提到的把所有子模块需要用到的依赖都添加到父模块的《依赖管理器》中,但是在SpringBoot工程中要看情况而定,有些由SpringBoot《依赖管理器》管理的依赖就不用添加到父模块的《依赖管理器》中。

  1. 在子模块中使用到的依赖如果存在SpringBoot《依赖管理器》中,该依赖会直接继承SpringBoot《依赖管理器》中的依赖版本号设置(其实也是从父模块继承而来,父模块从SpringBoot《依赖管理器》中继承)。

  2. 如果父模块的《依赖管理器》定义了SpringBoot《依赖管理器》中存在的依赖就会发生覆盖,此时子模块也是继承父模块《依赖管理器》中的依赖设置了。

  3. 结合上面两条,父模块没必要去管理SpringBoot《依赖管理器》已经定义的依赖,因为这样做是自找苦吃,除非想改变SpringBoot《依赖管理器》依赖的版本号时才去设置。

总结:Maven的继承关系跟Java一致。

下面展示了在父模块中的《依赖管理器》不定义依赖版本号带来的问题,以及依赖的继承性质,还有通过图片的方式展示了在SpringBoot工程中为什么父模块的《依赖管理器》不要去管理SpringBoot《依赖管理器》中存在的依赖。

Maven dependencyManagement 详解相关推荐

  1. Maven打包详解(“There are test failures”)

    Maven打包详解("There are test failures") 以下操作都是在IDEA软件内进行的. 第一步:idea界面中选择右边的Maven projects 界面: ...

  2. (十)Maven依赖详解

    1.何为依赖? 比如你是个男的,你要生孩子,呸呸呸...男的怎么生孩子,所以你得依赖你老婆,不过也不一定咯,你也可以依赖其她妹子. 我们在平时的项目开发中也是同理,你需要依赖一些东西才能实现相应的功能 ...

  3. maven assembly详解

    依赖 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-asse ...

  4. maven的dependencyManagement详解

    背景 最近接到一个jar包依赖统一管理的任务,提供一个类似于spring-framework-bom的pom管理项目(后续我称这个为pilot项目),在接到这个任务之前,对maven的熟悉程度只能说是 ...

  5. Maven学习详解(13)——Maven常用命令大全与pom文件讲解

    2019独角兽企业重金招聘Python工程师标准>>> 一.Maven常用命令 1.1.Maven 参数 -D 传入属性参数  -P 使用pom中指定的配置  -e 显示maven运 ...

  6. Maven使用详解视频课程——笔记(一)

    视频课程链接:http://edu.51cto.com/course/13014.html Maven项目管理工具,主讲:汤小洋 一.Maven简介 1. 什么是Maven ​ Apache Mave ...

  7. Maven入门详解与安装配置

    Maven: Maven出现前的问题: 假设你现在做了一个项目,项目中肯定要用到一些jar包,比如说mybatis,log4j,JUnit等,除了这些之外,你有可能用到你的同事开发的其他的东西,比如说 ...

  8. Maven入门详解以及Eclisp的集成

    1.首先要安装Maven到操作系统上 Maven的下载页面:http://maven.apache.org/download.html Maven跟Tomcat很像,下载下来后直接解压在指定的目录就安 ...

  9. Maven学习总结(49)——Maven Profile详解

    前言 Profile能让你为一个特殊的环境自定义一个特殊的构建:profile使得不同环境间构建的可移植性成为可能.Maven中的profile是一组可选的配置,可以用来设置或者覆盖配置默认值.有了p ...

  10. Maven Nexus详解

    一.简介 是种特殊的Maven仓库一般用于公司,比如三十个员工开发一个项目,需要每个人都联网去下载jar,每个人都很痛苦.此时公司可以搭建一个私服,让其中一人去私服下载jar,这样私服中就缓存了那些j ...

最新文章

  1. python特性(八):生成器对象的send方法
  2. 大学生开题报告php,php毕业设计开题报告
  3. phpMyAdmin 尝试连接到MySQL 服务器的错误解决方法
  4. access文本框如何分开_ACCESS 2007 如何在窗体中将一个文本框的内容复制给另外一个文本框?...
  5. 深度学习笔记--单层感知机原理及代码实现
  6. 程序员很平凡,但从事着不平凡的工作!
  7. 字典树 之 hdu 4099
  8. SQLite实现在线电子词典
  9. java代码处理URL转码
  10. vue项目设置footer始终处于页面底部
  11. 游戏技能一:激光扫射的实现【CocosCreator 2D】【TypeScript】
  12. lnk1120如何解决_Linking a C++ DLL 引发LNK1120和LNK2019问题的解决方案
  13. Gson详解--入门篇
  14. 安装libjpeg库后提示libjpeg.so.8不存在(linux环境)
  15. APP运营如何实现流量变现,获取更高收益?
  16. Reason given for failure: CSRF cookie not set.
  17. lepus 监控mysql_Lepus(天兔)监控MySQL部署
  18. Contacts(简介)
  19. QPainter的渐变
  20. 自动格式化输入内容 cleave.js

热门文章

  1. Nginx+uwsgi+Django项目部署后,url长度限制修改
  2. 用java怎么实现多语言翻译_快速实现中文翻译多国语言
  3. svn分支管理的使用与经验
  4. 使用java映射ipv4,ipv6到阿里DDNS,适用于黑白群晖或其他用途
  5. php英语参考文献,英文参考文献
  6. matlab 对数函数表示,matlab对数函数怎么表示
  7. C# installshield2020项目部署打包详细教程
  8. 三菱PLC定位控制2
  9. 大学生计算机基础第一章试题,2017年大学生计算机基础试题及答案
  10. 2022华中杯C题矿井提升机钢丝绳的缺陷分析思路讲解