前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >maven中dependencyManagement与dependencies的区别与联系

maven中dependencyManagement与dependencies的区别与联系

作者头像
翎野君
发布2023-05-12 20:36:48
4210
发布2023-05-12 20:36:48
举报
文章被收录于专栏:翎野君翎野君

背景

新的需求中需要使用到easyexcel中的动态生成列的功能,但是因为我们项目一开始使用的是1.2.4-beta的低版本,并不支持此项特性,所以我们需要将easyexcel的版本升级到高版本,让手下去拉个将项目中的easyexcel的版本升级至2.2.6。

目前的这个项目中对应有10个子项目,一开始小伙改的时候,只是把对应的impl的版本给改了,这样就会导致项目在打包运行其他子项目时会出现classNotFound的错误,因为这些类还是向上找的老版本的easyexcel,所以打包报错。

小伙不了解maven中的dependencyManagement标签特性,就傻乎乎的将每个子项目中的dependencies中关于easyexcel的那一项显式地声明为高版本,这样的话非常的笨拙,而且不利于管理。

利用dependencyManagement标签特性我们只需要在父项目中声明dependencyManagement并制定easyexcel的版本号即可,子项目不需要再次声明了。

接下来重点记一下这两个标签的区别。

区别

1. dependencyManagement标签:只是声明项目对jar包的依赖关系并对所依赖jar包进行版本管理,并不实现引入。而dependencies标签则是将所依赖的jar直接加到项目中。

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

在pom.xml文件中对jar的版本的判断途径:

1)如果dependencies里的dependency自己没有声明version元素,那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version。

2)如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

代码语言:javascript
复制
<!-- 会实际下载jar包,子项目会继承这些依赖  -->  
    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
        </dependency>
    </dependencies>
 
    <!-- //只是对版本进行管理,不会实际引入jar,子项目继承时必须显示声明  -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.2.6</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 区别
  • 在pom.xml文件中对jar的版本的判断途径:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档