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

Maven的dependencyManagements锁定版本依赖

Pom工程的父项目定义的依赖
 <dependencyManagement>
        <dependencies>
   <!--springcloud 2023.0.0-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springcloud alibaba 2022.0.0.0-RC2-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
                    </dependencies>
    </dependencyManagement>

这里锁定的依赖版本是spring-cloud-alibaba-dependencies,是以pom方式引入的,说明这是一个pom工程,其中import作用是将spring-cloud-alibaba-dependenciesPOM 文件中的 部分导入到当前项目的 中,从而实现依赖版本的统一管理。

这是国内git地址:
https://gitee.com/alibaba/spring-cloud-alibaba/blob/2023.0.3.2/spring-cloud-alibaba-dependencies/pom.xml

在这里插入图片描述
相当于是把这个项目中的所有dependencyManagement都合并到了自己创建的父项目中,所以只要是在spring-cloud-alibaba-dependencies中定义的依赖的版本,所有子项目都不需要再定义版本号,只需要引入依赖即可。

这段 Maven 依赖配置代码主要用于引入 Spring Cloud Alibaba 的依赖管理,下面为你详细解释代码中各个元素的含义和作用:

代码各元素解释

  • <dependency>:这是 Maven 中用于声明依赖项的根标签,用于指定项目所依赖的外部库或模块。
  • <groupId>:指定依赖所属的组织或项目组的唯一标识符。在这个例子中,com.alibaba.cloud 表明该依赖是由阿里巴巴云团队开发和维护的与 Spring Cloud 相关的组件。
  • <artifactId>:表示具体依赖的项目名称。spring-cloud-alibaba-dependencies 指的是 Spring Cloud Alibaba 提供的依赖管理 POM 文件,它可以帮助我们统一管理 Spring Cloud Alibaba 相关组件的版本。
  • <version>:指定依赖的版本号。这里使用的是 2023.1.0,意味着使用的是 2023 年发布的第一个主要版本,确保了项目中使用的 Spring Cloud Alibaba 相关组件是该版本。
  • <type>:指定依赖的类型,默认值是 jar。这里设置为 pom,表示引入的是一个 POM(Project Object Model)文件,而不是普通的 JAR 包。POM 文件通常用于依赖管理和项目配置。
  • <scope>:设置为 import,这是一种特殊的依赖范围,仅适用于 typepom 的依赖。import 范围的作用是将指定的 POM 文件中的 <dependencyManagement> 部分导入到当前项目的 <dependencyManagement> 中,从而实现依赖版本的统一管理。

实际用途

通过引入 spring-cloud-alibaba-dependencies,可以避免在项目中手动为每个 Spring Cloud Alibaba 组件指定版本号,减少版本冲突的风险。例如,在你的项目中需要使用 Nacos(服务注册与发现)、Sentinel(流量控制)等 Spring Cloud Alibaba 组件时,只需在 <dependencies> 中声明依赖,而无需指定版本:

<dependencies>
    <!-- 引入 Nacos Discovery 依赖,无需指定版本 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- 引入 Sentinel 依赖,无需指定版本 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
</dependencies>

这样,Maven 会自动从 spring-cloud-alibaba-dependencies 中获取这些组件的对应版本,确保它们之间的兼容性。


http://www.kler.cn/a/541874.html

相关文章:

  • Vue3(1)
  • Unity 打造游戏资源加密解密系统详解
  • 基于html2canvas实现将dom导出为图片,实现截屏效果
  • 云原生(五十四) | RDS数据导入与导出
  • 502 Bad Gateway 错误详解:从表现推测原因,逐步排查直至解决
  • 每日一题——没有重复项数字的全排列
  • 02、QLExpress从入门到放弃,相关API和文档
  • C++ Primer 类型转换
  • Linux: debug: perf: report: no-children
  • 掌握正则表达式_模式匹配的艺术
  • window 安装GitLab服务器笔记
  • datasets: PyTorch version 2.5.1+cu124 available 这句话是什么意思
  • SQL Server安装流程
  • JavaSE基本知识补充(第三篇)-可变参数工具类
  • 实战shiro有key无链rce
  • mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别
  • FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息?
  • AI时代下的安全新基石:零信任架构在人工智能系统中的应用
  • [python]png转webp的命令行工具
  • PyCharm结合DeepSeek-R1
  • JUnit5 单元测试详解
  • centos 7 关于引用stdatomic.h的问题
  • 【Git】完美解决git push报错403
  • 【20250211】栈与队列:225.用队列实现栈
  • 采集学校食堂人脸识别证件照,且尺寸底色统一的方法
  • 数据驱动企业数据智能化发展-通过财务数据分析模型评估企业经营健康度