Maven 仓库标准总结:
Maven 仓库实际上是一种规范标准,定义了依赖包的组织结构、命名方式、元数据描述和交互方式。
-
依赖的唯一标识:
groupId、artifactId、version、packaging、classifier -
文件组织结构:
groupId/artifactId/version/文件 -
元数据要求:
pom文件描述依赖关系和版本信息
解析:
| 字段 | 含义 | 唯一性 | 示例 |
|---|---|---|---|
| groupId | 组织/公司/项目组 | 全局唯一 | com.google.guava |
| artifactId | 库或模块名 | 同 groupId 下唯一 | guava |
| version | 版本号 | groupId+artifactId+version 唯一 | 31.1-jre |
组合起来就是 Maven 仓库中唯一的一个依赖:
com.google.guava:guava:31.1-jre
这是 Maven/Gradle 中典型的依赖坐标(dependency coordinate),唯一标识一个库。
Maven仓库分为:
-
本地仓库:
~/.m2/repository -
中央仓库:
https://repo1.maven.org/maven2/ -
私有仓库:Nexus、Artifactory 等
Maven 仓库本身是一个标准(规范),它规定了依赖文件如何组织和标识;实际存放依赖文件的仓库地址(本地/中央/私有仓库)是这个标准的实现。
中央仓库(Central Repository):
定义
-
Maven 官方提供的公开仓库,用来存放开源库和大部分常用依赖
-
所有 Maven/Gradle 项目默认都会从中央仓库下载依赖
特点
-
公开可访问:任何人都可以使用,无需注册
-
稳定可靠:官方维护,库版本齐全
-
URL 示例 :
https://repo1.maven.org/maven2/ -
用途:快速获取大多数开源依赖,如 Guava、Apache Commons、JUnit 等
2️⃣ 私有仓库(Private Repository)
定义
-
企业或个人自建的仓库,用来存放内部依赖或镜像
-
可以存放公司自研库、私有库,或者中央仓库的镜像
特点
-
访问控制:可设置权限,仅公司内部可访问
-
依赖管理:保证内部库统一版本,便于团队协作
-
镜像作用:加速依赖下载,尤其是国内网络访问中央仓库慢的情况
-
常见工具:Nexus、Artifactory、Harbor 等
Nexus = 一个安装的软件工具 + 内置 Web 界面 + HTTP 接口 + 文件存储管理系统
用于管理私有仓库,让用户上传、下载和维护依赖,内部遵循 Maven 仓库标准。
1️⃣ 镜像库的概念
-
镜像库(Mirror) = 远程仓库的"完整副本"
-
原理:
-
阿里或腾讯在国内建立一个服务器
-
定期或按需同步 Maven Central 的内容
-
用户访问镜像库时,如果需要的依赖已经缓存,直接从国内服务器下载
-
如果依赖没缓存,镜像库会从中央仓库拉取、缓存,然后提供给用户
-
核心目标:解决访问中央仓库慢或不稳定的问题,尤其在国内网络环境下,速度更快、稳定性更高。
如何从Maven下载三方库呢?
2️⃣ 使用 Gradle 下载
如果是 Android 或 Gradle 项目:
Groovy
1. 使用 Gradle 下载
如果是 Android 或 Gradle 项目:
在 build.gradle 中添加:
repositories {
maven { url "https://maven.aliyun.com/repository/public" } // 可用国内镜像
google()
mavenCentral()
}
dependencies {
implementation 'com.tencent:mmkv:1.3.14'
}
Gradle 会自动下载 mmkv 到本地缓存:~/.gradle/caches/modules-2/files-2.1/com.tencent/mmkv/1.3.14/...
2.直接从仓库网页下载
-
打开 Maven 搜索网站或镜像网站:
-
Maven Central: https://search.maven.org
-
阿里云镜像: https://maven.aliyun.com
-
-
搜索
com.tencent:mmkv:1.3.14 -
下载所需文件:
-
aar(Android 库) -
pom(元数据) -
sources.jar/javadoc.jar(源码 / 文档)
-
gradle下载的原理:
Android 项目中 Gradle 下载依赖的原理 其实就是:
根据依赖坐标 → 去仓库查找 → 下载文件 → 缓存到本地 → 构建时使用。
我给你按完整流程讲清楚。
1️⃣ Gradle 依赖的核心标识 GVA(坐标)
例如:
java
implementation 'com.tencent:mmkv:1.3.14'
这里包含 Maven 坐标:
| 字段 | 含义 |
|---|---|
| groupId | com.tencent |
| artifactId | mmkv |
| version | 1.3.14 |
Gradle 会根据这些信息拼接仓库路径。
2️⃣ Gradle 查找仓库
Gradle 会按照 repositories 的顺序查找依赖:
Groovy
repositories {
google()
mavenCentral()
maven { url "https://maven.aliyun.com/repository/public" }
}
查找顺序:
Groovy
google()
↓
mavenCentral()
↓
阿里镜像
哪个仓库先找到就用哪个。
3️⃣ 拼接 Maven 仓库路径
Gradle 会把 Maven 坐标转换为 标准仓库路径:
坐标:
java
com.tencent:mmkv:1.3.14
转换为路径:
java
com/tencent/mmkv/1.3.14/
完整 URL:
java
https://repo.maven.apache.org/maven2/com/tencent/mmkv/1.3.14/
打开这个链接:如下所示,这就是这个库在整个maven仓库中的所有文件

https://repo.maven.apache.org/maven2/com/tencent/mmkv 要看有哪些库直接把版本先去掉

然后下载:
java
mmkv-1.3.14.aar
mmkv-1.3.14.pom
4️⃣ 解析 POM 文件
Gradle 会先下载:
java
mmkv-1.3.14.pom
POM 文件里包含:
-
依赖库
-
版本信息
-
打包类型
-
transitive dependencies(传递依赖)
例如:
mmkv
├── dependency A
├── dependency B
Gradle 会继续递归下载这些依赖。
5️⃣ 下载并缓存到本地
下载后的文件会存到本地缓存:
Mac/Linux:
java
~/.gradle/caches/modules-2/files-2.1/
例如:
java
~/.gradle/caches/modules-2/files-2.1/com.tencent/mmkv/1.3.14/
里面会有:

下次构建就不会再下载。
6️⃣ Gradle 构建时使用依赖
Gradle 构建 APK 时:
java
AAR
↓
解压
↓
classes.jar
resources
AndroidManifest
↓
参与编译
7️⃣ Gradle 下载完整流程
java
build.gradle 声明依赖
│
▼
解析 Maven 坐标
com.tencent:mmkv:1.3.14
│
▼
按顺序查找仓库
google → mavenCentral → mirror
│
▼
拼接 Maven 仓库路径
/com/tencent/mmkv/1.3.14/
│
▼
下载 POM
│
▼
解析传递依赖
│
▼
下载 aar/jar
│
▼
缓存到 ~/.gradle
│
▼
参与构建 APK