欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 避免版本冲突:Spring Boot项目中正确使用Maven的DependencyManagement

避免版本冲突:Spring Boot项目中正确使用Maven的DependencyManagement

2025/2/21 3:35:09 来源:https://blog.csdn.net/weixin_45593273/article/details/144404034  浏览:    关键词:避免版本冲突:Spring Boot项目中正确使用Maven的DependencyManagement

最近在做一个SpringBoot项目jar包升级的时候,忽略了Maven中dependencyManagement和dependencies元素的区别,导致线上出现了问题。今天,我们就来聊聊这两者的区别。

1. dependencyManagement元素的应用场景

当我们在开发一个大型的后端项目时,模块通常很多,我们会使用Maven或者Gradle来管理项目,我们项目使用的是Maven。

项目中的每个模块通常都会依赖很多jar包,当jar包越来越多时,通常会把每个模块用到的公共的jar包提取出来,构建父POM文件。在父POM中,我们会使用dependencyManagement元素来管理包的版本。如此一来,子项目或者模块直接在直接引用jar包的依赖,不需要在指定版本号,下面是一个典型的父POM(pom.xml)。

<dependencyManagement><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.39</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>transmittable-thread-local</artifactId><version>2.12.1</version></dependency>
</dependencyManagement>

假设我们有一个模块来引用父POM,配置如下所示:

    <!--继承父POM--><parent><groupId>com.lixiang.vehicle.framework</groupId><artifactId>vehicle-framework-bom</artifactId><version>1.0.0.0</version></parent><groupId>com.customer.api</groupId><name>customer</name><packaging>pom</packaging><dependencies><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>transmittable-thread-local</artifactId></dependency></dependencies>

这样做的好处是:通过父POM可以统一管理项目依赖所有公共jar包的版本,确保项目的各个模块依赖的jar包版本的一致。如此一来,在服务的jar包版本升级时,只需要升级父POM管理的jar包版本,子项目或者子模块就会自动生效,而不需要按个升级每个子项目的jar版本。

2. dependencies元素的特性

不管是父POM还是子项目或者子模块的POM,只要是在dependencies元素内部所定义的jar包,均会自动引入,并且这些依赖还会被子项目全部继承。

3. dependencyManagement和dependencies区别

dependencyManagement用于集中管理依赖的版本,并不实际引入,而dependencies用于实际引入依赖

假如父POM和子项目的pom文件中都引入了一个共同的jar包,但是版本号不一样?那么子项目实际生效的版本是哪一个呢?答案是子项目引入的jar包版本。因此,子项目或者子模块想要使用父POM管理的jar包,直接引入即可,不需要指定版本号。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词