具体表现
在Maven仓库中如果看到jar包或其他相关文件是以“lastUpdated”作为扩展名结尾,说明jar包或其他相关文件下载失败。
原因分析
Maven在下载jar包的过程中,文件会以lastUpdated作为临时扩展名。文件下载完成后,Maven会将“lastUpdated”扩展名去掉。
如果下载一半连不上网,导致下载失败,那么Maven就放任文件保持临时扩展名“lastUpdated”不管。
当我们下一次强制要求Maven重新下载jar包时候,Maven看到这个文件以“lastUpdated”结尾,那么Maven就会无视“下载”命令。
所以对于以“lastUpdated”为扩展名的文件需要手动删除,然后再让Maven重新下载。
应对办法
- 基本做法:删除以“lastUpdated”结尾的文件,重新下载。
- 问题:Maven仓库使用一段时间后,以“lastUpdated”结尾的文件会非常多,手动删除不现实。
- 正确做法:借助clearLastUpdated.bat脚本文件批量处理。
clearLastUpdated.bat内容
cls
@ECHO OFF
SET CLEAR_PATH=D:
SET CLEAR_DIR=D:\MavenRepository
color 0a
TITLE ClearLastUpdated For Windows
GOTO MENU
:MENU
CLS
ECHO.
ECHO. * * * * ClearLastUpdated For Windows * * * *
ECHO. * *
ECHO. * 1 清理*.lastUpdated *
ECHO. * *
ECHO. * 2 查看*.lastUpdated *
ECHO. * *
ECHO. * 3 退 出 *
ECHO. * *
ECHO. * * * * * * * * * * * * * * * * * * * * * * * *
ECHO.
ECHO.请输入选择项目的序号:
set /p ID=
IF "%id%"=="1" GOTO cmd1
IF "%id%"=="2" GOTO cmd2
IF "%id%"=="3" EXIT
PAUSE
:cmd1
ECHO. 开始清理
%CLEAR_PATH%
cd %CLEAR_DIR%
for /r %%i in (*.lastUpdated) do del %%i
ECHO.OK
PAUSE
GOTO MENU
:cmd2
ECHO. 查看*.lastUpdated文件
%CLEAR_PATH%
cd %CLEAR_DIR%
for /r %%i in (*.lastUpdated) do echo %%i
ECHO.OK
PAUSE
GOTO MENU
clearLastUpdated.bat文件设置
- 将clearLastUpdated.bat文件放入Maven仓库根目录
- 使用文本编辑器打开
- 修改下面两项
SET CLEAR_PATH=D:
SET CLEAR_DIR=D:\RepMaven0105- CLEAR_PATH设置为Maven仓库所在盘符
- CLEAR_DIR设置为Maven仓库的根目录,一定要使用非中文没有空格的目录
注意注意的问题
如果依赖信息写错,世界上并不存在这个依赖对应的jar包,无论重试多少次都无法下载成功。
所以如果多次尝试下载,在网络和其他jar包下载都正常的情况下,特定某一个jar包始终下载失败,则很有可能是依赖信息写错了。