问题描述

在使用公司内部的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>


来强制每次都更新依赖库,但这个方法我还没有试过,这里先记下,下次再碰到这个问题的时候再试试。