Maven 依赖下载失败的原因,通过我自己在项目中的实践和摸索,总结出来主要有两点:使用的 Maven 仓库镜像地址在国外被墙、依赖本身存放在 Maven 仓库以外的地方。
原因
使用的 Maven 仓库镜像地址在国外被墙
第一种原因相信大家最常碰到,百度或者谷歌搜到的问题也大都是这个问题,解决办法也很简单,换用一个国内的镜像地址即可,这里不做多说。
依赖本身存放在 Maven 仓库以外的地方
第二种原因相信大家碰到的几率就比较少了,因为很少有发布的开源项目选择了 Maven 以外的仓库(其实也不少,但是大家用到的应该不多),我会在下面的解决方案中结合具体的例子来叙述。
解决方案
第一种
网上搜到的最简单粗暴的办法就是换用阿里云的 Maven 仓库,但各位是否思考过一个问题,如果阿里云的 Maven 仓库也没有这个依赖怎么办?
所以我们可以使用阿里云的 Maven 仓库作为首选地址,再添加一个备用的地址,如:
我们可以在本地 maven 的配置文件 setting.xml 中做如下配置:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>spring-libs-milestone</id>
<mirrorOf>central</mirrorOf>
<name>Spring Milestones</name>
<url>http://repo.spring.io/libs-milestone</url>
</mirror>
基本上 90% 以上的 Maven 依赖下载失败都能够解决。
第二种
考虑到大部分同学可能没有碰到过这种情况,所以我觉一个栗子(虽然我不喜欢吃栗子):
比如 Ring core 这个项目 Github 开源项目的地址为: https://github.com/ring-clojure/ring](https://github.com/ring-clojure/ring)
大家在 Maven 的中央仓库站点搜索这个项目,很容易就能够找到它:
但是如果直接去引用,那么很抱歉,Maven 会告诉你下载失败。
为什么呢?
因为它的 jar 包压根就没有放在 Maven 仓库上,而是放在了一个叫做 Clojars 的地方。
解决办法很简单,我们遇到这样的依赖的时候,只需要在项目的 pom 文件中做如下配置即可:
<repositories>
<repository>
<id>clojars</id>
<url>http://clojars.org/repo/</url>
</repository>
</repositories>
同样的道理,如果项目放在了其他的地方,我们可以根据它的地址,再去做相应的配置即可完成该依赖的下载。
结尾
如果大家觉得我的博文对各位有帮助,欢迎关注我的 Github: liumapp
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于