首页 > 其他分享 >maven中dependencyManagement与dependencies的区别与联系

maven中dependencyManagement与dependencies的区别与联系

时间:2022-12-08 14:33:01浏览次数:31  
标签:dependencyManagement version easyexcel jar maven dependencies 子项目 声明

背景

新的需求中需要使用到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为准。

<!-- 会实际下载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>

  

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。


maven中dependencyManagement与dependencies的区别与联系_jar

作者:​​翎野君​

如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。


转载文章请务必保留出处和署名,否则保留追究法律责任的权利。



标签:dependencyManagement,version,easyexcel,jar,maven,dependencies,子项目,声明
From: https://blog.51cto.com/lingyejun/5921260

相关文章

  • 黑马程序员2022新版SSM框架Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实
    Spring为什么要学Spring?1.专业角度:简化开发,降低企业级开发的复杂性框架整合,高效整合其他计算,提高企业级应用开发与运行效率2.学什么?简化开发IOCAOP事务......
  • eclipse 引入本地 jar 后, maven install 报 程序包不存在
    对接海康,引入本地jar包后,maveninstall报错: 程序包com.hikvision.artemis.sdk不存在 程序包com.hikvision.artemis.sdk.config不存在解决方式: 1、在pom.xml同级目录下......
  • 在idea中使用maven
         maven配置完成创建一个普通的maven项目    项目结构配置  在idea中配置tomcat       ......
  • MAVEN
            ......
  • Maven的认识与配置
    什么是MavenMaven的含义:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven是一个项目管理和整合工具。Maven为开发者......
  • SpringBoot使用maven打jar包配置
    在pom.xml文件中加入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>选择你自己的版本</ve......
  • 阿里云 maven 配置指南
    打开maven的配置文件(windows机器一般在maven安装目录的 conf/settings.xml ),在<mirrors></mirrors>标签中添加mirror子节点:<mirror><id>aliyunmaven</id>......
  • gradle与maven的异同
    Gradle比Maven好为什么用的人少?-知乎(zhihu.com) 作者:blindpirate链接:https://www.zhihu.com/question/276078446/answer/649632118来源:知乎著作权归作者所有。商......
  • day24 --> (Maven不完整版笔记)
    1、概念: 可以简单地理解为一个项目管理工具2、目录结构简介:  bin-->可执行文件(核心文件mvn)boot-->maven的启动器conf-->配置文件(核心文件settings......
  • 在Maven中出现javax.mail中文乱码问题解决记录
    学习Java时,看廖雪峰大神文章使用了javax.mail来发送SMTP邮件。在加入中文时,发现收到的邮件里中文都是乱码。按照一般经验,多半是编码的问题。然而在代码中,会涉及到编码的地......