今天使用命令mvn compile编译maven项目时提示错误信息,错误信息以下: html
[ERROR] Failed to execute goal on project <project_name>: Could not resolve dependencies for project com.xxx.xxx:<project_name>:jar:1.0.7: Failure to find com.xxx.xxx:obj-test-client:jar:1.1.1 in http://maven-nexus.xxx.com/repository/maven-public/ was cached in the local repository, resolution will not be reattempted until the update interval of fintech has elapsed or updates are forced -> [Help 1]
问题缘由 :
Maven默认会使用本地缓存的库来编译工程,对于上次下载失败的库,maven会在~/.m2/repository/<group>/<artifact>/<version>/
目录下建立xxx.lastUpdated文件,一旦这个文件存在,那么在直到下一次nexus更新以前都不会更新这个依赖库。
缓存
解决办法: maven
方法一:ide
删除v~/.m2/repository/<group>/<artifact>/<version>/目录下的*.lastUpdated文件,而后再次运行mvn compile编译工程。url
方法二:spa
修改~/.m2/settings.xml 或/opt/maven/conf/settings.xml文件,将其中的仓库添加 <updatePolicy>always</updatePolicy>来强制每次都更新依赖库。code
<repositories> <repository> <id>central</id> <url>http://central</url> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories>
Jenkins构建时报错:orm
经过jenkins编译时报此错,个人maven安装目录/opt/maven ,解决方法以下:xml
发现obj-test-client-1.1.1.jar下载到本地时失败,从提示可知是本地仓库的缓存(cached)形成,因而我删除目录/opt/maven/repo/<group>/obj-test-client/1.1.1后Jenkins从新构建(或在项目目录 mvn 从新编译)便可编译成功! htm
注意你要肯定远程仓库中存在此jar(obj-test-client-1.1.1.jar)包