自动清理Gradle缓存的脚本

wen 实用脚本 1

这里提供几个不同场景下的 Gradle 缓存清理脚本,你可以根据需求选择使用。

自动清理Gradle缓存的脚本

基础清理脚本(Linux/macOS)

#!/bin/bash
# 文件名: clean-gradle-cache.sh
echo "===== Gradle 缓存清理工具 ====="
echo ""
# Gradle 缓存目录
GRADLE_CACHE_DIR="$HOME/.gradle/caches"
# 检查目录是否存在
if [ ! -d "$GRADLE_CACHE_DIR" ]; then
    echo "❌ Gradle 缓存目录不存在: $GRADLE_CACHE_DIR"
    exit 1
fi
# 显示当前缓存大小
echo "📊 当前缓存大小:"
du -sh "$GRADLE_CACHE_DIR" 2>/dev/null
echo ""
# 清理所有缓存
echo "🔄 正在清理所有缓存..."
rm -rf "$GRADLE_CACHE_DIR"/*
# 可选:只清理特定版本或旧版本
# rm -rf "$GRADLE_CACHE_DIR/modules-2"  # 只清理依赖缓存
# rm -rf "$GRADLE_CACHE_DIR/transforms-1"  # 只清理转换缓存
echo "✅ 清理完成!"
echo ""
echo "📊 清理后缓存大小:"
du -sh "$GRADLE_CACHE_DIR" 2>/dev/null
echo ""
echo "⚠️ 下次构建时会重新下载依赖,请确保网络连接正常"

Windows PowerShell 脚本

# 文件名: clean-gradle-cache.ps1
Write-Host "===== Gradle 缓存清理工具 =====" -ForegroundColor Green
Write-Host ""
$gradleCacheDir = "$env:USERPROFILE\.gradle\caches"
# 检查目录是否存在
if (-not (Test-Path $gradleCacheDir)) {
    Write-Host "❌ Gradle 缓存目录不存在: $gradleCacheDir" -ForegroundColor Red
    exit 1
}
# 获取缓存大小
$size = (Get-ChildItem -Path $gradleCacheDir -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB
Write-Host "📊 当前缓存大小: $( [math]::Round($size, 2) ) MB" -ForegroundColor Yellow
Write-Host ""
Write-Host "🔄 正在清理所有缓存..." -ForegroundColor Cyan
# 清理缓存
Remove-Item -Path "$gradleCacheDir\*" -Recurse -Force -ErrorAction SilentlyContinue
Write-Host ""
Write-Host "✅ 清理完成!" -ForegroundColor Green
Write-Host ""
Write-Host "⚠️ 下次构建时会重新下载依赖,请确保网络连接正常" -ForegroundColor Yellow

选择性清理脚本(保留最近版本)

#!/bin/bash
# 文件名: smart-clean-gradle.sh
echo "===== 智能 Gradle 缓存清理 ====="
echo ""
GRADLE_CACHE_DIR="$HOME/.gradle/caches"
# 检查目录
if [ ! -d "$GRADLE_CACHE_DIR" ]; then
    echo "❌ 目录不存在"
    exit 1
fi
# 显示当前状态
echo "📊 当前 Gradle 缓存信息:"
du -sh "$GRADLE_CACHE_DIR" 2>/dev/null
echo ""
# 清理选项
echo "请选择清理类型:"
echo "1) 清理所有缓存(包括 Gradle wrapper 和依赖)"
echo "2) 只清理依赖缓存(保留 Gradle wrapper)"
echo "3) 只清理旧的 Gradle 版本(保留最新版本)"
echo "4) 清理 proguard 混淆缓存"
echo ""
read -p "请输入选项 (1-4): " choice
case $choice in
    1)
        echo "🔄 清理所有缓存..."
        rm -rf "$GRADLE_CACHE_DIR"/*
        ;;
    2)
        echo "🔄 清理依赖缓存..."
        rm -rf "$GRADLE_CACHE_DIR/modules-2"
        rm -rf "$GRADLE_CACHE_DIR/transforms-1"
        ;;
    3)
        echo "🔄 清理旧的 Gradle 版本..."
        # 保留当前使用的版本(根据需要调整)
        cd "$GRADLE_CACHE_DIR"
        for dir in gradle-*/; do
            if [ "$dir" != "gradle-latest/" ]; then
                echo "删除: $dir"
                rm -rf "$dir"
            fi
        done
        ;;
    4)
        echo "🔄 清理 proguard 缓存..."
        rm -rf "$GRADLE_CACHE_DIR/transforms-*"
        rm -rf "$GRADLE_CACHE_DIR/*.jar"
        ;;
    *)
        echo "❌ 无效选项"
        exit 1
        ;;
esac
echo ""
echo "✅ 清理完成!"
echo "📊 清理后大小:"
du -sh "$GRADLE_CACHE_DIR" 2>/dev/null

定时自动清理脚本(Linux cron)

#!/bin/bash
# 文件名: auto-clean-gradle.sh
# 用途:自动清理超过 30 天的缓存
echo "[$(date)] 开始自动清理 Gradle 缓存..."
GRADLE_CACHE_DIR="$HOME/.gradle/caches"
if [ -d "$GRADLE_CACHE_DIR" ]; then
    # 清理 30 天未使用的文件
    find "$GRADLE_CACHE_DIR" -atime +30 -delete 2>/dev/null
    echo "✅ 清理完成:删除30天以上未使用的缓存"
else
    echo "⚠️ 缓存目录不存在"
fi

使用方法:

  1. Linux/macOS 用户
    # 添加执行权限
    chmod +x clean-gradle-cache.sh

运行脚本

./clean-gradle-cache.sh


2. **Windows 用户**:
```powershell
# 以管理员身份运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
.\clean-gradle-cache.ps1
  1. 定时清理设置(Linux):
    # 每天凌晨 3 点执行
    crontab -e
    0 3 * * * /path/to/auto-clean-gradle.sh

注意事项:

  • ⚠️ 清理后首次构建会较慢,因为需要重新下载所有依赖
  • 💾 建议保留 .gradle/caches 目录下的 journal 文件夹
  • 🔧 如果使用 Android Studio,也可以通过 File > Invalidate Caches 清理
  • 📦 对于 Maven 本地仓库,可以通过删除 ~/.m2/repository 清理

选择适合你需求的脚本,建议优先使用智能清理脚本以避免不必要的完整重建。

抱歉,评论功能暂时关闭!