1. 概述

在这篇简短的教程中,我们将介绍几种清理本地 Maven 缓存的方法。清理缓存的目的通常是为了节省磁盘空间,或者清除那些已经不再引用的依赖构件。

我们会先介绍手动删除缓存目录的方式,也就是直接删除本地仓库文件夹;接着会使用 Maven Dependency Plugin 来完成清理,并介绍几种不同的插件参数选项,帮助你更灵活地控制清理行为。

2. 手动删除本地缓存目录

Maven 的本地仓库根据操作系统不同,默认存储在不同的路径下。由于 .m2 是隐藏目录,你可能需要先调整系统设置才能看到它。

  • Windows 系统默认路径:
C:\Users\<用户名>\.m2
  • macOS 系统默认路径:
/Users/<用户名>/.m2
  • Linux 系统默认路径:
/home/<用户名>/.m2

找到该目录后,只需删除其中的 repository 文件夹即可:

rm -rf ~/.m2/repository

⚠️ 注意:如果你的 Maven 本地仓库不是默认路径,可以通过 Maven Help Plugin 来定位实际路径:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

3. 使用 Maven Dependency Plugin 清理缓存

相比手动删除,使用 Maven 插件的方式更加“优雅”,也更适合集成到自动化流程中。

3.1 基本用法

首先,进入你的 Maven 项目根目录,然后执行:

mvn dependency:purge-local-repository

这个命令会做以下几件事:

✅ 解析项目依赖树(包括传递依赖)
✅ 删除本地缓存中的相关构件
✅ 重新从远程仓库下载这些依赖

也就是说,它会先下载缺失的依赖,再删除本地缓存,最后再重新下载一遍,这是默认行为。

3.2 避免预下载依赖

如果你只想删除缓存,不想触发依赖的预下载,可以加上 actTransitively=false 参数:

mvn dependency:purge-local-repository -DactTransitively=false

这样插件就不会去解析和下载传递依赖了。

3.3 完全跳过下载和重新解析

如果你只是想清掉本地缓存,完全不想有任何下载行为,可以再加上 reResolve=false 参数:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false

这个组合是最“干净”的清理方式,适合只想腾地方、不打算立即重新构建项目的场景。

4. 总结

本文介绍了两种清理 Maven 本地缓存的方法:

  • ✅ 手动删除 .m2/repository 目录:简单粗暴,适合一次性清理
  • ✅ 使用 mvn dependency:purge-local-repository 插件:更灵活,支持多种参数控制行为

根据你的实际需求选择合适的方式即可。如果是临时清理磁盘,直接删目录最省事;如果是 CI/CD 环境或需要保留部分缓存,推荐使用插件方式。


原始标题:Clearing the Maven Cache