# Gradle 缓存太大了，怎么清理？

> Gradle 缓存占用太大？用 MangoDisk 查看 Windows 和 Mac 上的开发缓存与项目构建产物，核对大小和路径后按需清理，保留项目源码和重要配置。

项目已经不做了，Gradle 下载的依赖和构建时生成的缓存，却可能还留在电脑上。用 Android Studio、IntelliJ IDEA 做过几个项目后，用户目录里的 `.gradle` 就值得检查一下。

**Gradle 缓存可以清理，但别把整个 .gradle 文件夹直接删掉。** 里面除了缓存，还有可能存着全局配置。清理后，后续构建可能需要重新下载依赖、重新生成文件；正在用的项目，尤其是离线项目，不必为了腾空间全部清空。

不想挨个找目录，可以先用 MangoDisk 看看 Gradle 和其他开发工具分别占了多少空间，再决定清哪一项。

## 用 MangoDisk 找出值得清理的缓存

打开 MangoDisk 的[深度清理](/zh/docs/features/deep-clean)，扫描后在「开发工具」中查看「Gradle 构建缓存」。展开结果，就能核对占用大小和实际路径，不用先记住那些隐藏目录在哪里。

同一个页面也能比较 npm、pnpm、Cargo 等受支持的开发缓存。磁盘快满时，先处理占用大、清理后也能重新获取的内容，比把所有缓存一口气删掉更实用。

![MangoDisk 深度清理，集中查看开发工具缓存的大小](https://assets.mangodisk.app/images/screenshots/windows/zh/light-01-deep-cleanup.jpg)

准备清理 Gradle 时：

1. 保存工作，结束构建和同步，退出 Android Studio、IntelliJ IDEA 等相关程序，并按提示关闭 Gradle、Java 进程。
2. 取消不准备清理的项目，只勾选已经检查过的 Gradle 缓存。
3. 核对所选路径和清理影响，再确认执行。扫描本身不会删除文件。

MangoDisk 清理的是选中范围内的缓存，不会替你判断哪些依赖以后还会用到。**删除不经过回收站；需要保留的离线依赖或无法重新获取的文件，先备份。** 恢复限制见[安全清理指南](/zh/docs/safety)。

Windows 上的 Gradle 清理范围包括 `caches`、`daemon`、`workers` 和 `notifications`；macOS 还包括下载的 Gradle Wrapper 发行包和 `.tmp` 临时目录。项目源码、全局 `gradle.properties`、`init.d` 脚本和 JDK 不在这条缓存规则的清理范围内。

## 手动清理时，别删错文件夹

Gradle 默认把用户级数据放在这些位置：

<table>
<thead>
  <tr>
    <th>
      系统
    </th>
    
    <th>
      默认目录
    </th>
    
    <th>
      打开方式
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Windows
    </td>
    
    <td>
      <code>
        %USERPROFILE%\.gradle
      </code>
    </td>
    
    <td>
      粘贴到文件资源管理器的地址栏
    </td>
  </tr>
  
  <tr>
    <td>
      macOS
    </td>
    
    <td>
      <code>
        ~/.gradle
      </code>
    </td>
    
    <td>
      Finder 中按 <code>
        Shift + Command + G
      </code>
      
      ，粘贴路径
    </td>
  </tr>
</tbody>
</table>

如果配置过 `GRADLE_USER_HOME`，以实际设置的目录为准。MangoDisk 的标准 Gradle 规则检查默认位置，不保证覆盖你另外指定的目录。[Gradle 官方目录说明](https://docs.gradle.org/current/userguide/directory_layout.html)也区分了缓存、配置和下载的工具。

手动处理同样要先关闭相关程序。打开目录后，先查看 `caches` 的大小和内容，确认要清理，再删除目标文件夹；不要连同外层 `.gradle` 一起删除。`gradle.properties` 可能保存了代理或仓库设置，`init.d` 可能有团队使用的脚本，`jdks` 则是构建要用的 Java 环境。

项目里的 `gradle` 文件夹也不是用户目录里的 `.gradle` 缓存。它通常存放 Wrapper 文件，和项目根目录中的 `gradlew`、`gradlew.bat` 一样，应当保留。

## 为什么运行 clean，空间还是没腾出来

`gradlew clean` 通常清理的是当前项目的 `build` 输出，不是用户目录下的全局依赖缓存。所以，项目清理成功了，`.gradle/caches` 仍然很大，并不矛盾。自定义项目的 `clean` 任务可能有额外操作，执行前仍要确认任务定义。具体行为可查 [Gradle 的 clean 说明](https://docs.gradle.org/current/userguide/command_line_interface.html#cleaning_outputs)。

如果是旧项目里的构建文件占了空间，MangoDisk 的「项目构建产物」可以识别受支持 Gradle 项目中的 `build` 和项目级 `.gradle`，让你按项目核对后清理。**这与「Gradle 构建缓存」是两类结果，不是删除项目本身。** 如果曾把需要留存的安装包或报告放进这些输出目录，先复制出来。

`--refresh-dependencies` 也不是释放空间的命令。它用于重新检查依赖，已有文件有效时仍可能复用，不会把整个缓存库清空。[Gradle 官方依赖缓存说明](https://docs.gradle.org/current/userguide/dependency_caching.html#sec:refreshing-dependencies)

## 清理前，留意下一次构建

删除缓存后，下一次构建可能更慢，也可能需要联网下载。准备离线工作，或项目依赖已经无法从公司仓库、旧仓库获取时，先保留相应缓存。

Gradle 本身有自动清理机制，不需要每次构建后都清一遍。手动整理更适合磁盘空间紧张、长期不用某些项目，或确认某批缓存已经不需要的情况。

如果 Gradle 清完了，空间仍然不够，可以用 MangoDisk 的[磁盘空间分析](/zh/docs/features/disk-analysis)查看整块盘或项目所在目录。顺着占用较大的方块逐层打开，看看是不是旧项目、安装包或其他工具的数据还在占空间。

![MangoDisk 磁盘空间分析，用矩形图查看目录和文件占用](https://assets.mangodisk.app/images/screenshots/windows/zh/light-05-disk-space-analysis.jpg)

[下载 MangoDisk](/zh)，把分散的开发缓存和构建产物集中检查，再决定哪些值得清理。支持 Windows 和 macOS，免费开源，无需注册或登录。

相关阅读：[pnpm 缓存清理](/zh/blog/clear-pnpm-store-cache) · [Cargo 缓存与 target 文件夹](/zh/blog/cargo-cache-vs-target-folder) · [开发者磁盘清理指南](/zh/blog/topics/developer-cleanup)
