简介
本文介绍解决was cached in the local repository, resolution will not be reattempted until the update ...的方法。
问题描述
用maven打包时,发现如下报错:
[ERROR] Failed to execute goal on project xxx: Could not resolve dependencies for project xxx:jar:0.0.1: Failure to find yyy:zzz:jar:1.0.0 in http://xxx:8081/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
原因分析
Maven默认会使用本地缓存的库来编译工程,对于上次下载失败的库,maven会在~/.m2/repository/<group>/<artifact>/<version>/目录下创建xxx.lastUpdated文件。
一旦这个文件存在,那么在直到下一次nexus更新之前都不会更新这个依赖库。
解决方案
方案1:maven命令后加-U参数
如:mvn clean package -U
详解
-U参数会强制update本地的jar(不用再专门去删除)
-U,--update-snapshots :
Forces a check for missing releases and updated snapshots on remote repositories.
方案2:删除*.lastUpdated文件
删除~/.m2/repository/对应目录或目录下的*.lastUpdated文件,然后再次运行maven命令
方案3:repository添加updatePolicy属性
可以强制每次都更新依赖库,方法是:将repository标签添加如下属性:
updatePolicy可以设置为”always”、”daily” (默认)、”interval:XXX” (分钟)或”never”。
可以在pom.xml或者settings.xml里修改。
例如: