当前位置: 首页 > ai >正文

【记录maven依赖规则-dependencyManagement,dependencies】

记录maven依赖规则-dependencyManagement,dependencies

依赖方式

直接依赖
间接依赖

依赖关系

直接依赖:
父级管理定义的版本,并且在中进行引用了的版本。
优先使用dependencyManagement定义的版本。

间接依赖:
如果间接依赖没有指定版本,Maven 会先查看 dependencyManagement 里是否有定义。若有,就使用定义的版本;若没有,Maven 会按照自身的依赖解析规则(如路径最短原则)来确定版本。

当你自己项目的 dependencyManagement 和 Spring 的 dependencyManagement 都定义了同一个依赖的版本,且项目的 dependencies 中没有显式引入该依赖(仅通过间接依赖引入)时,Maven 确定最终使用版本的规则如下:

1. 自身项目优先原则

Maven 会优先遵循自身项目 dependencyManagement 里定义的版本。这是因为 Maven 认为项目自身的配置优先级高于外部框架(如 Spring)的配置。所以,若你在自己项目的 dependencyManagement 中定义了某个依赖的版本,那么当该依赖以间接方式被引入时,Maven 会优先使用你所定义的版本。

示例

假设你的项目结构如下:

父 POM(自己项目的父 POM)

<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0.0</version><packaging>pom</packaging><dependencyManagement><dependencies><dependency><groupId>com.some-library</groupId><artifactId>some-library</artifactId><version>2.0.0</version></dependency></dependencies></dependencyManagement>
</project>

子项目 POM

<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>child-project</artifactId><version>1.0.0</version><parent><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0.0</version></parent><!-- 假设引入了一个依赖,该依赖间接依赖 com.some-library --><dependencies><dependency><groupId>com.dependency</groupId><artifactId>dependency-project</artifactId><version>1.0.0</version></dependency></dependencies>
</project>

Spring 的 dependencyManagement 定义(简化示意)

<dependencyManagement><dependencies><dependency><groupId>com.some-library</groupId><artifactId>some-library</artifactId><version>1.5.0</version></dependency></dependencies>
</dependencyManagement>

在这种情况下,由于你自己项目的 dependencyManagement 定义了 com.some-library 的版本为 2.0.0,所以当 dependency-project 间接引入 com.some-library 时,Maven 会使用 2.0.0 版本。

2. 若自身项目未定义

要是你自己项目的 dependencyManagement 中没有定义该依赖的版本,Maven 才会去参考 Spring 的 dependencyManagement 里定义的版本。若 Spring 也未定义,Maven 就会按照依赖树的路径最短原则等自身的依赖解析规则来确定版本。

总结而言,Maven 会优先采用你自己项目 dependencyManagement 中定义的依赖版本,以保证项目对依赖版本有最大的控制权。

http://www.xdnf.cn/news/2458.html

相关文章:

  • Matlab 报错:尝试将 SCRIPT vl_sift 作为函数执行:
  • Java学习手册:Spring 框架核心概念
  • 如何通过OKR管理项目目标
  • 四 YARN配置和HBase配置
  • C++ 区分关键字和标识符
  • 职场提效小工具!
  • 【halcon】tuple_sort_index 和 select_obj 配合使用 详解
  • 小白学习python第四天
  • SpringBoot常用注解解析汇总
  • 基础学习:(9)vit -- vision transformer 和其变体调研
  • 03 基于 STM32 的温度控制系统
  • vscode eslint与vue-official冲突,导致点击的时候鼠标不会变成手型,一直在加载,但是不转到相应方法。
  • 二进制补码:给补码求原码
  • vue3中ref在js中为什么需要.value才能获取/修改值?
  • 智能文档抽取技术发展前沿与应用
  • Linux Socket编程:从API到实战
  • 模型删除层后重建
  • Go语言入门:目录与链接
  • EKS环境下服务重启50X错误
  • 企业架构之旅(1):TOGAF 基础入门
  • 【Arxiv 2025】Single Image Iterative Subject-driven Generation and Editing
  • 小黑享受思考心流: 73. 矩阵置零
  • 《全球反空间能力》报告翻译——部分1
  • CISA、项目管理、信息系统项目等等电子书资料
  • ComfyUI for Windwos与 Stable Diffusion WebUI 模型共享修复
  • LeetCode热题100--438.找到字符串中所有字母异位词--中等
  • ISIS的由于L1产生的一系列问题
  • 实验:串口通信
  • 02.02、返回倒数第 k 个节点
  • 2 商户查询缓存