第 1 章 作战室开局:坐标、仓库与诊断武器 本章要回答的三个问题: 一个 jar 是怎么被 Maven 找到、搬进项目、装进本地缓存的? 值班工程师手上那十几个 mvn 命令,各自在什么战况下使用? 出了依赖问题,第一发诊断炮弹应该打向哪里? 为什么会有这一章 每个进作战室的人都要先认地形。Maven 的地形由三样东西构成:给构件编号的坐标系统、存放构件的仓库网络、把两者连起来的解析与下载机制。多数教程把它们当名词解释讲,结果是工程师背得出 groupId 和 artifactId 的定义,却在"依赖为什么下载不下来"面前束手无策。 本章换一种讲法:以风控服务 risk-engine 的创建为起点,沿着一次真实的依赖引入过程走一遍,看 Maven 如何把一个坐标翻译成本地仓库里的一份文件。
本章要回答的三个问题:
- 一个 jar 是怎么被 Maven 找到、搬进项目、装进本地缓存的?
- 值班工程师手上那十几个 mvn 命令,各自在什么战况下使用?
- 出了依赖问题,第一发诊断炮弹应该打向哪里?
每个进作战室的人都要先认地形。Maven 的地形由三样东西构成:给构件编号的坐标系统、存放构件的仓库网络、把两者连起来的解析与下载机制。多数教程把它们当名词解释讲,结果是工程师背得出 groupId 和 artifactId 的定义,却在"依赖为什么下载不下来"面前束手无策。
本章换一种讲法:以风控服务 risk-engine 的创建为起点,沿着一次真实的依赖引入过程走一遍,看 Maven 如何把一个坐标翻译成本地仓库里的一份文件。讲清这条链路,第 3 章的依赖战争、第 4 章的私服治理才有着落点。
对照开篇的三个问题,读完本章你应当能够:

| 节号 | 回答哪个问题 | 关键产出 |
|---|---|---|
| 1.1 从 jar 地狱到 Maven 的诞生 | 为什么要有一套坐标系统 | 对依赖混沌代价的量化认识 |
| 1.2 坐标、POM 与仓库体系 | jar 如何被找到与缓存 | 仓库寻址顺序图与命中规则 |
| 1.3 常用命令作战频道表 | 日常战况怎么调度 | 命令与参数的选用清单 |
| 1.4 诊断工具箱第一课 | 第一炮打向哪里 | 依赖树与有效 POM 的阅读能力 |
不必系统学,认得出标签的嵌套结构即可。POM 的标签集合是封闭而小的(坐标、依赖、插件、属性四大族),本章各节的示例读下来自然就覆盖了高频标签。真正要下功夫的不是 XML 语法,而是每个标签背后 Maven 做了什么——这正是本章的讲法。
默认在用户主目录下 Maven 配置目录里的 repository 文件夹。查看体积用系统的目录大小统计即可;它的内容全部可以按坐标重建(第 4.2 节讲治理),所以"塞满"只影响磁盘不影响正确性。别急着清理——清错了目录反而制造下载风暴。
前者是直接调用的诊断类目标(不进生命周期),后者跑的是 clean 生命周期。两种输出风格对应两种出场方式,第 2.2 节会把这套"常规军与特种兵"的编制讲透。
本章结束时你已经能看懂 Maven 的一次完整取件过程。第 2 章把镜头转向构建机器内部:生命周期如何分阶段推进、插件如何被绑定到阶段上执行。诊断工具箱里看到的"插件执行日志",到那时会变成你能逐行解读的作战记录。