全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-23 5 分钟 ✍️ juanwangdev

本地仓库与缓存机制

本地仓库缓存已下载的依赖,避免重复网络请求。

本地仓库位置

默认路径

操作系统默认路径
WindowsC:\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 安装项目到本地仓库

📝 发现内容有误?点击此处直接编辑

← 上一篇 快照仓库行为
下一篇 → 远程仓库声明
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库