关于<dependencyManagement>和<dependencies>

dependencyManagement

作用:项目存在多个子模块,模块间引入相同的依赖项,为了项目的正确运行,避免依赖项版本冲突,管理依赖项,保证各模块依赖项版本号一致

项目顶层的 父pom文件中dependencyManagement元素。通过它来管理jar包的版本,让子模块中引用一个依赖而不用显示的列出版本号。子模块不指定依赖版本号时,maven会沿着子模块向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

父pom:

XML 复制代码
<dependencyManagement>
   <dependencies>
      <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
      </dependency>
   <dependencies>
</dependencyManagement>

子pom:

XML 复制代码
<dependencies>
   <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
   </dependency>
</dependencies>

dependencies

相对于dependencyManagement,如果在父pom文件中通过dependencies引入jar,将默认被所有的子模块继承。

子模块如果希望有自己个性化的内容,可以在子模块中对于其中的某个属性进重新定义。

父 pom:

XML 复制代码
<dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
         <version>3.1</version>
      </dependency>
  </dependencies>
</dependencyManagement>

子pom:

(<exclusions><exclusion>作用:排除关联依赖的引入)

XML 复制代码
<dependencies>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-web</artifactId>
       <version>3.2</version>
       <exclusions>
           <exclusion>
              <groupId>com.alibaba</groupId>
              <artifactId>fastjson</artifactId>
           </exclusion>
       </exclusions>
   </dependency>
</dependencies>

dependencies :即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)

dependencyManagement:只是声明依赖,并不实现引入,因此子项目需要显示的声明需要引用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的版本。

参考链接:https://www.jianshu.com/p/f8bd3c96f5ea

相关推荐
winner88812 小时前
Linux 软件安装 “命令密码本”:yum/apt/brew 一网打尽
linux·运维·服务器
独隅2 小时前
在 Lua 中,你可以使用 `os.date()` 函数轻松地将时间戳转换为格式化的时间字符串
开发语言·lua
思麟呀3 小时前
Linux的基础IO流
linux·运维·服务器·开发语言·c++
星释3 小时前
Rust 练习册 :Pythagorean Triplet与数学算法
开发语言·算法·rust
星释3 小时前
Rust 练习册 :Nth Prime与素数算法
开发语言·算法·rust
winner88814 小时前
嵌入式Linux驱动开发全流程:工具协作+核心概念拆解(从入门到理解)
linux·运维·驱动开发
lkbhua莱克瓦244 小时前
Java基础——集合进阶3
java·开发语言·笔记
ShiinaKaze4 小时前
fatal error: bits/c++config.h: No such file or directory
linux·gcc·g++
ζั͡山 ั͡有扶苏 ั͡✾4 小时前
从零搭建 Data-Juicer:一站式大模型数据预处理与可视化平台完整教程
python·data-juicer
多喝开水少熬夜4 小时前
Trie树相关算法题java实现
java·开发语言·算法