# Gradle 快取占用太大，怎麼清理？

> Gradle 快取占了太多空間？用 MangoDisk 查看 Windows 和 Mac 上的開發工具快取與建置產物，確認大小和路徑後再清理，保留原始碼與重要設定。

專案已經不做了，Gradle 下載的相依套件和建置時產生的快取，卻可能還留在電腦裡。用 Android Studio、IntelliJ IDEA 做過幾個專案後，使用者資料夾裡的 `.gradle` 就值得檢查一下。

**Gradle 快取可以清理，但不要直接刪掉整個 .gradle 資料夾。** 裡面除了快取，也可能存著全域設定。清理後，下次建置可能需要重新下載相依套件、重新產生檔案；還在使用的專案，尤其是需要離線工作的專案，不必為了騰空間全部清空。

不想逐一找資料夾，可以先用 MangoDisk 比較 Gradle 和其他開發工具各占了多少空間，再決定清哪些。

## 用 MangoDisk 找出值得清理的快取

打開 MangoDisk 的[深度清理](/tw/docs/features/deep-clean)，掃描後在「開發工具」中找到「Gradle 建置快取」。展開結果就能確認大小和實際路徑，不必先記住那些隱藏資料夾在哪裡。

同一個畫面也能比較 npm、pnpm、Cargo 等支援項目的快取。磁碟快滿時，先處理占用大、之後也能重新取得的內容，比一次刪光所有快取更實用。

![MangoDisk 深度清理，集中查看開發工具快取的大小](https://assets.mangodisk.app/images/screenshots/windows/tw/light-01-deep-cleanup.jpg)

準備清理 Gradle 時：

1. 儲存工作，等建置與同步結束，關閉 Android Studio、IntelliJ IDEA 等相關程式，並依提示結束 Gradle、Java 處理程序。
2. 取消其他項目的勾選，只選取已經檢查過的 Gradle 快取。
3. 確認選取的路徑和清理影響，再執行清理。單純掃描不會刪除檔案。

MangoDisk 會清理選取範圍內的快取，不會替你判斷哪些相依套件以後還會用到。**刪除不會經過資源回收筒或垃圾桶；離線要用的相依套件、無法重新取得的檔案，先備份。** 還原限制可參考[安全清理指南](/tw/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` 資料夾又是另一回事，通常存放 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 的[磁碟空間分析](/tw/docs/features/disk-analysis)查看整顆磁碟或專案資料夾。沿著較大的方塊逐層打開，看看是不是舊專案、安裝檔，或其他工具的資料還在占空間。

![MangoDisk 磁碟空間分析，以矩形圖查看資料夾與檔案占用](https://assets.mangodisk.app/images/screenshots/windows/tw/light-05-disk-space-analysis.jpg)

[下載 MangoDisk](/tw)，集中檢查分散的開發工具快取和建置產物，再決定哪些值得清理。支援 Windows 和 macOS，免費開源，不必註冊或登入。

延伸閱讀：[pnpm 快取清理](/tw/blog/clear-pnpm-store-cache) · [Cargo 快取與 target 資料夾](/tw/blog/cargo-cache-vs-target-folder) · [開發者磁碟清理指南](/tw/blog/topics/developer-cleanup)
