maven的dependencyManagement详解

本文探讨了maven的dependencyManagement使用中遇到的问题,包括jar包依赖统一管理、冗余代码、dependencyManagement的理解和应用、版本冲突处理、dependencyManagement与pom的关系等,通过实例解析了maven依赖版本选择的就近原则,并提供了排查依赖问题的方法。
摘要由CSDN通过智能技术生成

 

背景

       最近接到一个jar包依赖统一管理的任务,提供一个类似于spring-framework-bom的pom管理项目(后续我称这个为pilot项目),在接到这个任务之前,对maven的熟悉程度只能说是会简单的使用,这次才发现,其实在使用过程中也是比较浑浑噩噩的,很多东西没有深入去了解和思考,导致的影响可能对于一个项目来说,编译和运行阶段不会出什么错(就算出错了,也能很快的排查掉),但是如果要对项目有严格要求和追求的话,可能就需要更细致学习。

PS:可能我遇到的问题比较小儿科我自己不懂,但都是我实际遇到的问题总结,大家勿喷!

存在的问题

       在这次任务的过程中并不顺利,本身mgr给我的时间是30天(包含周末),但我当时心里的想法是,这个事情需要这么长时间吗,我觉得我一个礼拜就能搞定,但幸好我没有说出来,目前我的任务状态还是没有上线,并且有一定概率会延期。我发现了很多项目都存在一个问题,试想下我们在使用maven的版本管理机制的目的是什么?是为了解决jar包冲突问题,这个事情的价值体现,也就是统一封装和管理一些有公共依赖的项目的jar包的版本,让项目结构,或者说你们的external libraries结构更清晰,减少pom结构代码的冗余,也可以结合项目原型去打造一个包含jar包管理的后端脚手架,而我在完成任务的过程中,发现大多数的项目都会引入一个pilot或者多个pilot,而且pilot里面包含的依赖,大多数的项目还会在自身的dependencyManagement再次引入,这种情况还不少,那这样就会导致几个问题

  1. 出现了冗余代码
  2. 违背了pilot的初衷
  3. 会给后来人产生误导
  4. 有可能因为这种冗余导致产生jar包依赖冲突的现象,我自己就遇到了,因为我自己cv的时候粗心大意导致的。

dependencyManagement

      maven语法提供的标签,用来统一管理jar包依赖的版本,但是不会引入依赖,只有当在某个模块中显示引入某个依赖的时候才会真正的引入jar包,以下是我在工作中踩的几个坑,也让我对这个标签的了解更加深入,其实这些坑都是围绕着同一个问题,当项目中直接或者间接存在同一个依赖但是不同的版本,maven最终采用的是哪个版本,有没有什么统一的规则,或者说同一个版本,但是因为同一个版本不存在差异性就

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值