Press "Enter" to skip to content

maven拉包始终向snapshot拉取的原因

本地java项目依赖一个私有包,尝试编译失败,发现是因为这个私有包的原因。

找到这个包上传到我们自己的私服,然后再尝试编译。

编译出错,提示这个包私服不存在。

仔细核对出错日志,发现maven在尝试前往snapshot的仓库找我们的包,但是我们的包是上传到releases仓库的。

这很让人费解,我原先的理解是,只有包的版本号末尾携带-SNAPSHOT后缀的maven才会尝试去snapshot仓库寻找才对。

经过各种排查无果,在某次编译的时候,我仔细观察了下日志。

出现了类似 仓库地址…public…cache 字样, 然后他又去snapshot寻找包,找不到报错。

恍然大悟,应该是maven的某种cache,他先在releases里面找了,然后发现找不到,他就在本地maven里面cache了这个找不到的结果。

后面编译的时候,他都读了本地的cache,发现没有这个releases包,导致每次都是去snapshot找。

这样问题解决就很简单了,本地清理下缓存即可,例如我的场景清理如下目录

~/.m2/repository/com/xiaocaicai/demo

将我的本地缓存删了之后,就能正常拉取私服的包了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注