公司新安排一项目开发,一开始mirror仓库配置有问题导致Maven仓库一直报红,后来更改好配置后还是报红,咨询了同事,说是会有缓存,这个缓存必须手工清理,不能自动删除,故找到一个博主的脚本,执行后Maven仓库不爆红了,问题解决,原文链接:https://blog.csdn.net/qq845175537/article/details/131063500
按博主步骤操作就行:
本文分享一个 Maven 仓库一键删除 .lastUpdated 和 _remote.repositories 文件的批处理脚本,与其他相比具有以下优点:
- 简单易用:只需双击批处理文件即可完成删除操作。
- 高效精准:针对指定目录下的所有 .lastUpdated 和 _remote.repositories 文件进行快速、彻底的删除操作,有效减少磁盘空间占用。
- 支持中文:通过 chcp 命令设置命令行窗口字符集为 UTF-8,可以正常显示中文。
- 自动识别磁盘类型:通过 fsutil 命令获取磁盘的 MediaType 属性值,可以自动识别出当前磁盘类型(固态硬盘或机械硬盘)。
- 高效精准:针对指定目录下的所有 .lastUpdated 和 _remote.repositories 文件进行快速、彻底的删除操作,在机械硬盘上使用 robocopy 命令进行删除,执行效率更高。
- 增加用户提示:通过倒计时提示的方式告知用户操作进度,增加用户体验。
- 使用变量和判断进行功能控制:采用变量和判断的方式控制不同磁盘类型下的搜索和删除过程,功能更灵活且可读性更强,便于日后修改和维护。
下面是批处理脚本:
chcp 65001 > nul
set "REPOSITORY_PATH=%cd%"
echo 正在搜索...
color c
setlocal enabledelayedexpansion
set "cnt_lastupdated=0"
set "cnt_repositories=0"
rem 遍历当前目录下的所有符合条件的文件并删除
dir /s /b "%REPOSITORY_PATH%" > nul
ping -n 2 127.0.0.1 > nul
color a
for /f "delims=" %%F in ('dir /a-d /b /s "%REPOSITORY_PATH%\*.repositories" "%REPOSITORY_PATH%\*.lastUpdated" 2^>nul') do (
echo %%F
if "%%~xF" == ".repositories" set /a cnt_repositories+=1
if "%%~xF" == ".lastUpdated" set /a cnt_lastupdated+=1
del /f /q "%%F"
)
if !cnt_lastupdated! gtr 0 echo .lastUpdated 文件总数:!cnt_lastupdated!
if !cnt_repositories! gtr 0 echo .repositories 文件总数:!cnt_repositories!
color c
color 07
echo 搜索完毕!
if !cnt_lastupdated! equ 0 if !cnt_repositories! equ 0 echo 未找到任何符合条件的文件。
set /a count=10
for /l %%i in (%count%,-1,1) do (
echo 倒计时 %%i 秒,该窗口将在 %%i 秒后关闭。
timeout /t 1 > nul
)
exit
使用方法:
将上述代码保存为 .bat 文件,放置在 Maven 仓库根目录下。
双击批处理文件,等待执行完毕即可。
需要注意的是,删除操作非常彻底,请特别注意备份重要文件并谨慎操作。