博客
关于我
Dependencies与DependencyManagement的区别
阅读量:796 次
发布时间:2023-03-28

本文共 1864 字,大约阅读时间需要 6 分钟。

Dependency管理与子模块依赖引入的区别

在Maven项目中,DependencyManagement和Dependencies之间存在关键的区别,这对项目的依赖管理有着重要的影响。DependencyManagement标签通常位于父工程的pom.xml文件中,主要用于定义依赖的版本和范围,而不是直接下载依赖文件。它类似于接口的定义,供子模块根据需要进行实际引入。

当子模块的pom.xml文件中没有显式声明特定依赖时,Maven会从父工程的DependencyManagement中继承相关的版本信息。例如,父工程中定义了依赖org.springframework.cloud:spring-cloud-dependencies的版本为Finchley.SR2,如果子模块没有重新声明该依赖的版本,子模块将会使用父工程定义的版本。当子模块中显式声明了依赖时,Maven会优先使用子模块中的版本信息,这与Java类的方法重写原理类似。

需要注意的是,DependencyManagement标签中的依赖声明不会直接引入到Maven仓库中。它们仅作为依赖引用的模板,只有当子模块在Dependencies标签中显式引入时,Maven才会下载对应的依赖文件。这种设计允许开发者在需要时为特定子模块定义不同的依赖版本,同时保持父工程的统一管理。

示例说明

以下是一个典型的DependencyManagement配置示例:

父工程的pom.xml

org.springframework.cloud
spring-cloud-dependencies
Finchley.SR2
pom
import
com.alibaba
fastjson
1.2.61

子模块的pom.xml

org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-starter-oauth2
org.springframework.cloud
spring-cloud-starter-openfeign
com.alibaba
fastjson
1.2.72

在上述示例中,org.springframework.cloud没有在子模块中显式声明版本信息,因此子模块会从父工程继承Finchley.SR2版本。而com.alibaba在子模块中重新声明了版本信息1.2.72,因此子模块会使用该版本。

Dependency管理的优势

使用DependencyManagement标签在项目中具有以下优势:

  • 统一版本控制:所有子模块共享父工程中定义的依赖版本,确保项目的一致性。
  • 简化管理:只需修改父工程的依赖版本,所有相关子模块版本将随之更新。
  • 灵活性:允许部分子模块定义独立于父工程的依赖版本,满足特定需求。
  • 这种方式不仅提高了项目管理效率,还减少了潜在的依赖冲突问题。

    转载地址:http://dbhfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现按位倒序(附完整源码)
    查看>>
    Objective-C实现按位运算符乘以无符号数multiplyUnsigned算法(附完整源码)
    查看>>
    Objective-C实现排队叫号系统(附完整源码)
    查看>>
    Objective-C实现控制NRP8S功率计读取功率 (附完整源码)
    查看>>
    Objective-C实现控制程控电源2306读取电流 (附完整源码)
    查看>>
    Objective-C实现摄氏温度和华氏温度互转(附完整源码)
    查看>>
    Objective-C实现播放器(附完整源码)
    查看>>
    Objective-C实现操作MySQL(附完整源码)
    查看>>
    Objective-C实现操作注册表 (附完整源码)
    查看>>
    Objective-C实现改变图片亮度算法(附完整源码)
    查看>>
    Objective-C实现数字图像处理算法(附完整源码)
    查看>>
    Objective-C实现数组切片(附完整源码)
    查看>>
    Objective-C实现数组去重(附完整源码)
    查看>>
    Objective-C实现数组的循环左移(附完整源码)
    查看>>
    Objective-C实现数除以二divideByTwo算法(附完整源码)
    查看>>
    Objective-C实现文件分割(附完整源码)
    查看>>
    Objective-C实现文件拷贝(附完整源码)
    查看>>
    Objective-C实现文件断点传输(附完整源码)
    查看>>
    Objective-C实现文件的删除、复制与重命名操作实例(附完整源码)
    查看>>
    Objective-C实现无序表查找算法(附完整源码)
    查看>>