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

Maven踩坑指南:依赖冲突专治不服,范围聚合玩明白!

谁说Maven只有枯燥的配置?今天咱用“唠嗑式”教学,把依赖冲突、依赖范围、项目聚合拆解得明明白白,新手也能秒懂😜

一、依赖冲突:Maven版“版本打架”怎么破?

咱先还原一个真实场景:你开开心心配了两个Spring依赖,结果项目启动就报错,一看是spring-core版本不一致——一个5.1.8,一个5.2.0,俩版本“掐架”了!

为啥会冲突?spring-context会间接依赖spring-core:5.1.8,而spring-aop会间接依赖spring-core:5.2.0,Maven蒙圈了:“我该用哪个?”

别慌,4大招教你摆平冲突:

1. 第一声明者优先:拼顺序,不拼手速

Maven规则:谁先在pom.xml里声明,就优先用谁的依赖版本。

把想要的高版本spring-aop放前面,spring-core就会跟着用5.2.0:

2. 路径近者优先:直接“钦点”核心依赖

“路径近”= 直接依赖 > 间接依赖。与其等Maven猜,不如直接声明spring-core,一步到位:

3. 排除依赖:把“捣乱”的依赖踢出去

不想让spring-context带5.1.8的spring-core?直接排除它的间接依赖,眼不见心不烦:

4. 版本锁定:一招锁死,一劳永逸(推荐!)

这是企业开发最常用的方案——用dependencyManagement统一管理版本,子依赖自动继承,再也不打架:

二、依赖范围:别让依赖“乱串门”

Maven给依赖分了“活动范围”,不同范围的依赖只在指定阶段生效,别配错了!用一张表讲清楚(附“人话翻译”):

依赖范围

main/java(编译)

test/java(测试)

war包(运行)

人话翻译

compile(默认)

全家桶选手:编译、测试、运行都要它(比如spring-context)

test

测试专属:只有写测试用例时才生效(比如junit)

runtime

运行才上线:编译不用,运行/测试要(比如JDBC驱动)

provided

服务器管饭:编译/测试用,运行时服务器自带(比如servlet-api,打包不进war)

💡 举个栗子:

  • junit必须配test:不然编译主代码时会找不到junit,纯纯浪费!

  • servlet-api配provided:Tomcat本身带了这个包,打包进去会冲突,纯属画蛇添足!

三、拆分与聚合:项目“分家”不分手

项目做大了,把dao、service、web全堆在一个工程里?维护起来能把人逼疯!Maven的“拆分+聚合”专治这种混乱:

核心思路:父工程统一管理,子模块各司其职

为啥要这么拆?

  1. 解耦:改service代码不影响dao,不用全量编译;

  2. 复用:dao模块能被多个service引用;

  3. 统一管理:父工程maven_parent集中下载/管理所有依赖版本,子模块直接继承,不用重复配版本。

举个父工程的核心配置(子模块只需继承即可):

总结

  1. 依赖冲突:优先用dependencyManagement版本锁定,次之排除依赖/调整顺序,直接引用兜底;

  2. 依赖范围:记住4个核心范围的生效阶段,test给测试包、provided给服务器自带包;

  3. 拆分聚合:父工程做依赖管理,子模块按功能拆分(dao/service/web),解耦又好维护。

💬 评论区聊聊:你踩过哪些Maven依赖的坑?是怎么解决的?

http://www.jsqmd.com/news/338523/

相关文章:

  • 重庆集训比赛记录
  • 2026年老旧电梯维保优质厂家推荐榜:济南电梯保养、济南电梯改造、济南电梯更新、济南电梯维修、电梯保养、电梯更新选择指南 - 优质品牌商家
  • Servlet入门保姆级教程:从0到1搞定Tomcat与Web开发
  • 调查:超1/4游戏开发者近两年遭解雇,近一半仍未找到新工作;阿里自研AI芯片“真武”亮相;华为手机全系降价,最高达4000元 | 极客头条
  • 编程门槛被压到799美元?“那个拿着Mac Mini+Claude的「门外汉」,抢走了程序员3个月的活!”
  • 九江濂溪区桶装水配送 - 中媒介
  • DeepMind的PYSC2环境——报错:pygame.error: Unable to make GL context current
  • 进口金库门哪里买 - 中媒介
  • 饲料烘干机、中药材干燥机、中药材烘干机、农业干燥机、化工原料烘干机、化工干燥机、四川干燥机厂家、四川烘干机厂家选择指南 - 优质品牌商家
  • 我的常用软件
  • 2026年锂电池厂家权威推荐榜:户外太阳能路灯、新农村太阳能路灯、老年车锂电池、货三轮锂电池、道路太阳能路灯、高杆太阳能路灯选择指南 - 优质品牌商家
  • 金库安全屋适合别墅安装吗? - 中媒介
  • 网上课程学习系统毕业论文+PPT(附源代码+演示视频)
  • 三合安防金库门技术优势(ECB-S V级认证) - 中媒介
  • 基于Android的大学生食堂点餐平台的设计与实现(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 基于SpringBoot和Vue的物联网仓储管理系统(源码+lw+部署文档+讲解等)
  • 隐形金库门与传统金库门安全性对比 - 中媒介
  • [深度强化学习算法进阶项目】[源代码+论文】(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 2026市政亮化太阳能路灯锂电池优质厂家推荐 - 优质品牌商家
  • 基于SpringBoot和Vue的物流管理系统(源码+lw+部署文档+讲解等)
  • python2025旅游推荐系统+爬虫+可视化(协同过滤算法)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • MCM/ICM写作模板
  • 华福加盟商政策 - 中媒介
  • 基于模型参考自适应系统的改进滑模观测器(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 莱芜老干烘冲泡水温 - 中媒介
  • 基于SpringBoot高校防诈骗宣传平台系统(源码+lw+部署文档+讲解等)
  • Flink SQL Deduplication用 ROW_NUMBER 做流式去重 - 实践
  • 于图像处理的停车位识别系统设计的Matlab源程序(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 基于深度学习YOLOv10的船舶类型识别检测系统(YOLOv10+YOLO数据集+UI界面+模型)
  • 全屋定制怎么选 - 中媒介