自动清理maven缓存的脚本

wen 实用脚本 1

本文目录导读:

自动清理maven缓存的脚本

  1. Windows 批处理脚本 (clean_maven_cache.bat)
  2. Linux/macOS Shell 脚本 (clean_maven_cache.sh)
  3. 使用方法
  4. 注意事项

Windows 批处理脚本 (clean_maven_cache.bat)

@echo off
chcp 65001 >nulMaven 缓存清理工具
echo ========================================
echo        Maven 缓存清理工具
echo ========================================
:: 设置 Maven 本地仓库路径(默认路径)
set MAVEN_REPO=%USERPROFILE%\.m2\repository
:: 检查路径是否存在
if not exist "%MAVEN_REPO%" (
    echo 错误:未找到 Maven 仓库路径
    echo 默认路径:%MAVEN_REPO%
    echo 请确认 Maven 是否已安装或路径是否正确
    pause
    exit /b 1
)
echo Maven 仓库路径:%MAVEN_REPO%
echo.
:: 选项菜单
echo 请选择清理模式:
echo 1. 清理所有下载失败的依赖(*.lastUpdated 文件)
echo 2. 清理所有未完成的下载(*.inProgress 文件)
echo 3. 清理所有 SNAPSHOT 版本
echo 4. 清理所有缓存(谨慎操作)
echo 5. 自定义清理(输入关键字)
echo 6. 完全清理所有缓存
echo 0. 退出
echo.
set /p choice="请输入选项 (0-6): "
if "%choice%"=="1" goto clean_lastUpdated
if "%choice%"=="2" goto clean_inProgress
if "%choice%"=="3" goto clean_snapshot
if "%choice%"=="4" goto clean_all
if "%choice%"=="5" goto custom_clean
if "%choice%"=="6" goto clean_entire
if "%choice%"=="0" exit /b 0
echo 无效选项!
pause
exit /b 1
:clean_lastUpdated
echo.
echo 正在清理下载失败的依赖...
del /s /q "%MAVEN_REPO%\*lastUpdated*" 2>nul
echo 清理完成!
goto end
:clean_inProgress
echo.
echo 正在清理未完成的下载...
del /s /q "%MAVEN_REPO%\*.inProgress" 2>nul
echo 清理完成!
goto end
:clean_snapshot
echo.
echo 正在清理 SNAPSHOT 版本...
for /d /r "%MAVEN_REPO%" %%d in (*SNAPSHOT) do (
    if exist "%%d" (
        echo 删除 SNAPSHOT 目录:%%d
        rd /s /q "%%d" 2>nul
    )
)
echo 清理完成!
goto end
:clean_all
echo.
echo 正在清理所有缓存文件...
del /s /q "%MAVEN_REPO%\*lastUpdated*" 2>nul
del /s /q "%MAVEN_REPO%\*.inProgress" 2>nul
for /d /r "%MAVEN_REPO%" %%d in (*SNAPSHOT) do (
    if exist "%%d" (
        rd /s /q "%%d" 2>nul
    )
)
echo 清理完成!
goto end
:custom_clean
set /p keyword="请输入要清理的关键字(如:commons-lang): "
if "%keyword%"=="" (
    echo 关键字不能为空!
    pause
    exit /b 1
)
echo.
echo 正在清理包含 "%keyword%" 的目录...
for /d /r "%MAVEN_REPO%" %%d in (*%keyword%*) do (
    if exist "%%d" (
        echo 删除目录:%%d
        rd /s /q "%%d" 2>nul
    )
)
echo 清理完成!
goto end
:clean_entire
echo.
echo 警告:此操作将删除整个 Maven 缓存!
set /p confirm="确定要继续吗?(Y/N): "
if /i not "%confirm%"=="Y" goto end
echo 正在删除整个缓存...
rd /s /q "%MAVEN_REPO%" 2>nul
echo 缓存已删除!
echo 注意:重新构建项目时会重新下载依赖
goto end
:end
echo.
echo 操作完成!
pause

Linux/macOS Shell 脚本 (clean_maven_cache.sh)

#!/bin/bash
# Maven 缓存清理脚本
# 适用于 Linux 和 macOS
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Maven 仓库路径(默认路径)
MAVEN_REPO="${HOME}/.m2/repository"
# 检查路径是否存在
if [ ! -d "$MAVEN_REPO" ]; then
    echo -e "${RED}错误:未找到 Maven 仓库路径${NC}"
    echo -e "默认路径:${MAVEN_REPO}"
    echo "请确认 Maven 是否已安装或路径是否正确"
    exit 1
fi
clear
echo "========================================"
echo -e "${BLUE}        Maven 缓存清理工具${NC}"
echo "========================================"
echo -e "Maven 仓库路径:${YELLOW}$MAVEN_REPO${NC}"
echo ""
# 显示菜单
echo "请选择清理模式:"
echo -e "${GREEN}1.${NC} 清理所有下载失败的依赖 (*.lastUpdated)"
echo -e "${GREEN}2.${NC} 清理所有未完成的下载 (*.inProgress)"
echo -e "${GREEN}3.${NC} 清理所有 SNAPSHOT 版本"
echo -e "${GREEN}4.${NC} 清理所有缓存文件(推荐)"
echo -e "${GREEN}5.${NC} 自定义清理(输入关键字)"
echo -e "${RED}6.${NC} 完全清理所有缓存(谨慎)"
echo -e "${GREEN}0.${NC} 退出"
echo ""
read -p "请输入选项 (0-6): " choice
case $choice in
    1)
        echo -e "\n${YELLOW}正在清理下载失败的依赖...${NC}"
        find "$MAVEN_REPO" -name "*lastUpdated*" -type f -delete
        echo -e "${GREEN}清理完成!${NC}"
        ;;
    2)
        echo -e "\n${YELLOW}正在清理未完成的下载...${NC}"
        find "$MAVEN_REPO" -name "*.inProgress" -type f -delete
        echo -e "${GREEN}清理完成!${NC}"
        ;;
    3)
        echo -e "\n${YELLOW}正在清理 SNAPSHOT 版本...${NC}"
        find "$MAVEN_REPO" -type d -name "*SNAPSHOT*" -exec rm -rf {} + 2>/dev/null
        echo -e "${GREEN}清理完成!${NC}"
        ;;
    4)
        echo -e "\n${YELLOW}正在清理所有缓存文件...${NC}"
        find "$MAVEN_REPO" -name "*lastUpdated*" -type f -delete
        find "$MAVEN_REPO" -name "*.inProgress" -type f -delete
        find "$MAVEN_REPO" -type d -name "*SNAPSHOT*" -exec rm -rf {} + 2>/dev/null
        echo -e "${GREEN}清理完成!${NC}"
        ;;
    5)
        read -p "请输入要清理的关键字(如:commons-lang): " keyword
        if [ -z "$keyword" ]; then
            echo -e "${RED}关键字不能为空!${NC}"
            exit 1
        fi
        echo -e "\n${YELLOW}正在清理包含 ${keyword} 的目录...${NC}"
        find "$MAVEN_REPO" -type d -name "*${keyword}*" -exec echo "删除目录:{}" \; -exec rm -rf {} + 2>/dev/null
        echo -e "${GREEN}清理完成!${NC}"
        ;;
    6)
        echo -e "\n${RED}警告:此操作将删除整个 Maven 缓存!${NC}"
        read -p "确定要继续吗?(Y/N): " confirm
        if [[ $confirm == [Yy] || $confirm == [Yy][Ee][Ss] ]]; then
            echo -e "${YELLOW}正在删除整个缓存...${NC}"
            rm -rf "$MAVEN_REPO"
            echo -e "${GREEN}缓存已删除!${NC}"
            echo -e "${YELLOW}注意:重新构建项目时会重新下载依赖${NC}"
        else
            echo "操作取消"
        fi
        ;;
    0)
        echo "退出程序"
        exit 0
        ;;
    *)
        echo -e "${RED}无效选项!${NC}"
        exit 1
        ;;
esac
echo ""
echo -e "${GREEN}操作完成!${NC}"

使用方法

Windows 环境:

  1. 保存脚本为 clean_maven_cache.bat
  2. 右键以管理员身份运行
  3. 选择相应的清理选项

Linux/macOS 环境:

  1. 保存脚本为 clean_maven_cache.sh
  2. 添加执行权限:chmod +x clean_maven_cache.sh
  3. 运行脚本:./clean_maven_cache.sh

注意事项

  1. 备份建议:在执行完全清理(选项6)前,建议先备份,特别是当您有自定义配置时
  2. 网络要求:清理后首次构建项目需要重新下载依赖,请确保网络连接正常
  3. 权限问题:Windows 下可能需要管理员权限才能删除某些文件
  4. 自定义路径:如果您的 Maven 仓库不在默认位置,可以修改脚本中的 MAVEN_REPO 变量

这些脚本可以帮助您快速清理 Maven 缓存,解决构建过程中的各种缓存问题。

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