第 3 章 依赖战争:传递、冲突与版本仲裁 本章要回答的三个问题: 明明只声明了 5 个依赖,为什么依赖树膨胀到 200 多行?传递依赖按什么规则蔓延? 同一构件的多个版本同时入场时,Maven 按什么规则裁决?NoSuchMethodError 这类运行期爆炸如何在构建期定位? 团队级版本混乱如何治理?dependencyManagement 与 BOM 这套"中央指挥部"怎么建制? 为什么会有这一章 第 1 章开篇那场凌晨事故——生产环境 NoSuchMethodError——的完整战例将在本章复盘。依赖战争是 Maven 世界伤亡最重的战场:构建能过、测试能过、上线就炸;本机好好的、CI 就挂;升一个库、塌一大片。
本章要回答的三个问题:
- 明明只声明了 5 个依赖,为什么依赖树膨胀到 200 多行?传递依赖按什么规则蔓延?
- 同一构件的多个版本同时入场时,Maven 按什么规则裁决?NoSuchMethodError 这类运行期爆炸如何在构建期定位?
- 团队级版本混乱如何治理?dependencyManagement 与 BOM 这套"中央指挥部"怎么建制?
第 1 章开篇那场凌晨事故——生产环境 NoSuchMethodError——的完整战例将在本章复盘。依赖战争是 Maven 世界伤亡最重的战场:构建能过、测试能过、上线就炸;本机好好的、CI 就挂;升一个库、塌一大片。它的根源不是 Maven 有缺陷,而是传递依赖机制与人的直觉之间有一条认知鸿沟:你以为你引入的是 5 个库,实际入场的是它们的全部社会关系。
本章按战争进程推进:先看传递依赖怎么蔓延(3.1),再学冲突定位战术(3.2),然后建立版本仲裁制度(3.3),最后补上补给线故障处置(3.4)、供应链防线(3.5)与排查方法论(3.6)。这一章值得占掉你一半的学习时间。

| 节号 | 回答哪个问题 | 关键产出 |
|---|---|---|
| 3.1 传递依赖的蔓延路径 | 战争为何总在扩大 | 传递规则表与树膨胀案例 |
| 3.2 依赖冲突战场定位 | 冲突怎么找怎么修 | 定位流程图与修复决策表 |
| 3.3 版本仲裁中央指挥部 | 版本裁决权归谁 | BOM 建制方案与 enforcer 门禁 |
| 3.4 依赖下载失败断粮处置 | 补给断了怎么办 | 分场景处置手册 |
| 3.5 供应链安全防线 | 弹药会不会有毒 | 攻击面清单与审计工具链 |
| 3.6 系统化排查战术 | 打不赢时怎么组织 | 四步排查法与作战记录制度 |
本章反复出现三条纪律,先立在这:取证先于动手(三份快照制度,3.6 节)、修复先问影响面(冲突修好只是起点,反向影响要评估,3.2 节)、制度先于反应(enforcer 门禁挡住下一次,3.3 节)。带着这三条读案例,每节的战术都会自然归位。
本章打完,单项目层面的依赖问题你已能独立处置。第 4 章把战争经验制度化:多模块工程里仲裁权如何逐级下放、私服如何成为全团队的统一补给线。