问题描述
在使用公司内部的maven仓库编译项目时,由于新加入了几个依赖包,第一次编译失败了,此后在修复了公司内部maven仓库后编译项目出现错误:
Failure to transfer org.apache.maven:maven-archiver:pom:2.5 from http://repo.maven.apache.org/
maven2 was cached in the local repository, resolution will not be reattempted until the update
interval of central has elapsed or updates are forced. Original error: Could not transfer artifact
org.apache.maven:maven-archiver:pom:2.5 from/to central (http://repo.maven.apache.org/
maven2): No response received after 60000
问题原因
Maven默认会使用本地缓存的库来编译工程,对于上次下载失败的库,maven会在~/.m2/repository/ / / /目录下创建xxx.lastUpdated文件,一旦这个文件存在,那么在直到下一次nexus更新之前都不会更新这个依赖库。
解决办法
删除~/.m2/repository/ / / /目录下的*.lastUpdated文件(用报错的包的名称在repository 文件夹搜索,就能看到*.lastUpdated文件),然后再次运行mvn compile编译工程。
另外也有说可以修改~/.m2/settings.xml文件,将其中的仓库添加
<updatePolicy>always</updatePolicy>
来强制每次都更新依赖库,但这个方法我还没有试过,这里先记下,下次再碰到这个问题的时候再试试。