本地仓库与缓存机制
本地仓库缓存已下载的依赖,避免重复网络请求。
本地仓库位置
默认路径
| 操作系统 | 默认路径 |
|---|---|
| Windows | C:\Users\用户名.m2\repository |
| Linux/Mac | ~/.m2/repository |
自定义路径
在 settings.xml 中配置:
XML
<settings>
<localRepository>D:/maven-repo</localRepository>
</settings>
仓库存储结构
目录映射规则
XML
groupId/artifactId/version/artifactId-version.type
示例:
com/springframework/spring-core/5.3.20/spring-core-5.3.20.jar
目录结构示例
Bash
.m2/repository/
├── org/
│ └── springframework/
│ └── spring-core/
│ ├── 5.3.20/
│ │ ├── spring-core-5.3.20.jar
│ │ ├── spring-core-5.3.20.pom
│ │ ├── spring-core-5.3.20.jar.sha1
│ │ └── _remote.repositories
│ └── maven-metadata.xml
├── junit/
│ └── junit/
│ └── 4.13.2/
│ └── junit-4.13.2.jar
缓存机制
下载流程
Bash
1. 检查本地仓库
├── 存在:直接使用
└── 不存在:从远程下载
2. 下载后缓存到本地
3. 后续请求直接使用缓存
SNAPSHOT 更新策略
Bash
<repository>
<id>snapshots</id>
<url>https://repo.example.com/snapshots</url>
<snapshots>
<updatePolicy>daily</updatePolicy> <!-- 每日检查更新 -->
</snapshots>
</repository>
updatePolicy 值
| 值 | 说明 |
|---|---|
| always | 每次构建检查 |
| daily | 每日检查(默认) |
| interval:X | 每 X 分钟检查 |
| never | 从不检查更新 |
强制更新依赖
Bash
# 强制检查 SNAPSHOT 更新
mvn clean install -U
# 更新特定依赖
mvn dependency:resolve -U
清理本地缓存
清理特定依赖
XML
# 删除本地仓库中的特定构件
rm -rf ~/.m2/repository/org/springframework/spring-core
清理全部缓存
Bash
rm -rf ~/.m2/repository/*
使用插件清理
Bash
mvn dependency:purge-local-repository
本地仓库元数据
maven-metadata.xml
text
<metadata>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<versioning>
<release>5.3.20</release>
<versions>
<version>5.3.0</version>
<version>5.3.20</version>
</versions>
</versioning>
</metadata>
_remote.repositories
记录构件来源仓库:
text
spring-core-5.3.20.jar>central=
spring-core-5.3.20.pom>central=
本地安装构件
text
# 将项目安装到本地仓库
mvn install
# 输出位置
~/.m2/repository/com/example/my-app/1.0.0/
手动安装第三方 jar
text
mvn install:install-file \
-Dfile=path/to/jar.jar \
-DgroupId=com.example \
-DartifactId=my-lib \
-Dversion=1.0.0 \
-Dpackaging=jar
仓库位置配置优先级
| 配置位置 | 优先级 |
|---|---|
| 命令行 -Dmaven.repo.local | 最高 |
| settings.xml | 中 |
| 超级 POM(默认) | 低 |
要点总结
- 本地仓库默认 ~/.m2/repository
- settings.xml 可自定义路径
- 目录结构:groupId/artifactId/version/
- SNAPSHOT 默认每日检查更新
- -U 强制检查更新,dependency:purge 清理缓存
- mvn install 安装项目到本地仓库
📝 发现内容有误?点击此处直接编辑