Maven本地仓库更新apache.logging插件后,构建Java项目时遇到如下错误:
[错误] Non-resolvable import POM: Could not find artifact org.apache.logging.log4j:log4j-bom:pom:2.17.2 in nexus ...
明明本地存在相应的jar包,偏偏要去远程下载,关键还下载失败,说来其实并不奇怪,因为在插件目录中存在以下文件:
- *.lastUpdated
- _remote.repositories
在构建项目时,_remote.repositories会和settings.xml文件中配置的仓库地址进行比较,如果不匹配则会更新jar包及相关文件,并生成*.lastUpdated,即:_remote.repositories文件的作用是修改maven配置settings.xml后即使本地仓库已经缓存jar/pom也依然会去远程仓库获取。
删除缓存文件
遇到该问题,解决方法是删除*.lastUpdated和_remote.repositories文件,进入maven仓库目录,然后执行删除命令。
Linux
# 进入指定的目录后执行以下命令 find . -name _remote.repositories | xargs rm -f find . -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \; # 或通通删除 find . -name *.lastUpdated | xargs rm -f
Windows
# 进入指定的目录后执行以下命令 for /r %i in (*.lastUpdated) do del %i for /r %i in (_remote.repositories) do del %i
此外,如果不删除文件,也可以修改_remote.repositories文件中远程仓库的地址,不推荐,因为太累了。
原创文章禁止转载:技术学堂 » 构建项目时Maven本地仓库无效的解决方法