一、问题背景

最近这两天,感觉自己智商急剧退化,到了自己都捉急的地步,呃,有必要记录下来,以后智商被人甩几条街的时候,看看这篇文字,找找灵感也是好的!

这个项目呢,是用IDEA开发的,我一切都弄好了,结果死活运行不起来,pom.xml文件报错,各种不能解析版本,类似于:failed to resolve artifact......我一看,好家伙,maven里面配置的所有依赖,它都不能解析下载,因为后面提示的是当前配置的版本号,我又以为是版本配置的有问题,于是本宝宝换了N个版本,最终:问题还是没解决!

这个时候,本宝宝开始怀疑IDEA了,没办法,用的所有工具里面,就属这个开发环境最生,我总觉得是哪儿哪儿没配好,然后还找人问了问,上网查了查,结果:还是未果!一气之下,我弃了这个让我很有好感的IDE,转而投入了老朋友eclipse的怀抱,我兴高采烈的把项目稍作修改,给搬进了eclipse,本以为问题迎刃而解,因为其实就是一个SSM框架,我以前配过,而且eclipse的工作空间里,本身就还存着一个空的SSM框架,我以前用过测过,它曾经绝对是可以正常使用的。但结果:错误依然,只多不少!

这时候,傻眼儿了(默哀被我舍弃掉了的IDEA)开始思考,这绝对不是开发工具的问题了,就开始跟着错误找原因,我找啊找:终于还是没有找到!

我就想我之前手动引入jar包的时候,没这么多问题,这maven管理的jar包到底怎么了?于是乎,我打开了我的本地仓库,结果:仓库里什么都没有,一个 jar都没有,全都是以lastupdate结尾的文件,不过,问题终于找到原因了。于是就想办法让maven把依赖jar包下载下来再说!以前开发项目,都是组长配好了的,自己什么都不用管,把文件导入进去就OK了,更没有自己配置过maven的setting.xml文件,都是被组长配置好了,然后往自己本地导就行了,这回一看,傻傻不知道咋整。最终,使出杀手锏:看文档!然后看了几篇博客,问题解决!这个问题的出现和我久久不能解决的原因,就是因为我对maven这几种仓库的不理解,以及我不知道他们是怎么个运作流程导致的,这里本宝宝就胡言乱语的说它一说。

二、maven的几种仓库

2.1,本地仓库

maven本地仓库,有个默认的位置,就是用户目录下的.m2/repository,如果要更改本地仓库的位置,那就更新setting.xml文件好了,如下:

<localRepository>C:\Users\AngelHHX\.m2\repository</localRepository>

此处的位置可以被更改为,自己指定的仓库的位置!

2.2,远程仓库

远程仓库一般来说,主要包括三种:中央仓库、私服、其他公共库

中央仓库是默认的远程仓库,maven在安装的时候,自带中央仓库的配置,中央仓库包含了绝大多数流行的开源java构件、源码等,一般java项目所依赖的构件(其实就是jar包)都可以在这里下载。

私服是一种比较特殊的远程仓库,它是架设在局域网内的仓库服务,代理广域网上的远程仓库。当maven需要下载jar包的时候,从私服请求,如果私服不存在该jar包,则从远程仓库下载!

看一下怎么配置的(本地私服):

中央仓库的配置:

<repositories>
<repository>
<id>central</id>
<name>Central</name>
<url>http://repo.maven.apache.org/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>

我项目中所出问题的原因:

因为开发上一个项目的时候,配置了私服,然后这次的项目和上次的项目不一样,中途将私服的配置给注销了,就只留了本地仓库。今天发现本地仓库的文件太多了,有些是这个项目中用不上的,所以我就全给删了,想着重新下载相关依赖jar(想法是挺好的,问题的关键是,我没告诉maven去哪儿下载呀),结果。。。。。。。呵 呵了

三、maven的访问jar流程

其实在setting.xml的maven配置中,除了本地仓库,远程仓库的配置外,还有一个关于镜像的配置,那么这几个到底是怎么运作的呢!

maven首先会去本地仓库找相关的依赖jar,如果没有,假使配置了私服,那么第二步就会去私服上下载依赖jar。如果私服这条路走了,还是没有下载到相关jar,那么这时候就会去中央仓库下载,在中央仓库下载的时候,会根据镜像的配置对其jar进行备份缓存。下一次再次访问中央仓库的时候,就会被镜像拦截,先从镜像地址获取jar(降低中央仓库的压力)!

所以,我那个配置文件仅仅有一个空空的本地仓库,没有私服地址,没有中央仓库的配置,能下载到jar包才有鬼了,项目能运行起来,更有妖了!

四、总结

为什么要配置私服呢?

1,不用每个人都去访问中央仓库,节省外网宽带,也同时降低中央仓库的负荷

2,加速maven依赖jar的下载(局域网快,用过QQ传文件就知道了)

3,局域网内更为稳定

4,统一控制,方便管理

5,可以添加一些自定义的jar依赖下载

一切都的罪孽,都来源于自己从来没有去配置过maven,也没认真瞅过setting.xml文件的内容,更没有去仔细看过每一个节点所配置的内容,当时开发的时候,就是组长大概讲了讲结构,然后就开始导入直接使,隐患太大了。也真真是实践出真知啊,下一篇博客,介绍一下我那个奇葩的数据库连接池的问题,更是无语+呵呵

maven无法下载依赖jar包—几种仓库的区别的更多相关文章

  1. idea本地Maven仓库不能下载依赖jar包的解决方案

    1.确认maven是否正正常安装,是否配置了环境变量,可以通过命令 mvn -version 看是否显示maven的版本信息. 2.检查maven的setting.xml配置文件中本地仓库位置配置是否 ...

  2. eclipse导入maven项目后依赖jar包更新问题->update project按钮

    eclipse导入maven项目后依赖jar包更新问题 1.eclipse有专门的导入maven项目按钮,file-import-maven project,eclipse会自动查找指定路径下的pom ...

  3. maven下载依赖jar包失败处理方法--下载jar包到本地并安装到maven仓库中

    所有maven依赖jar包地址:https://repo1.maven.org/maven2/org/apache/ 1. 安装jar包失败报错: The following artifacts co ...

  4. mvn 搭建临时仓库批量下载依赖jar包

    1.新建文件夹temp,在temp下新建setup.bat ,pom.xml 2.编辑setup.bat 和pom.xml bsetup.bat call mvn -f pom.xml depende ...

  5. Maven 手动添加selenium JAR 包到本地仓库

    安装Maven后我们会在用户目录下发现.m2 文件夹.默认情况下,该文件夹下放置了Maven本地仓库.m2/repository. 在intellij中创建maven项目时,添加 selenium 依 ...

  6. Maven实战(十一)eclipse下载依赖jar包出问题

    问题描述 在pom.xml中配置了依赖,但是提示依赖不成功,或在本地仓库找不到相关依赖 大致错误如下: ArtifactDescriptorException: Failed to read arti ...

  7. spring maven项目解决依赖jar包版本冲突方案

    引入:http://blog.csdn.net/sanzhongguren/article/details/71191290 在spring reference中提到一个解决spring jar包之间 ...

  8. Gradle下载依赖jar包位置修改

    gradle会下载相关需要依赖的jar包,默认的本地存放地址是:C:/Users/(用户名)/.gradle/caches/modules-2/files-2.1,很多人和我一样不愿意放在C盘,所以需 ...

  9. maven项目导入依赖jar包并打包为可运行的jar包

    1.在pom.xml文件中添加插件 <build> <finalName>LeadServer</finalName> <!-- jar包名前缀,如果没有指定 ...

随机推荐

  1. python中的构造函数和构造函数和析构函数的作用

    构造函数和构造函数和析构函数都属于python中的特殊方法 其中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用 ...

  2. OpenGL小试牛刀第二季(粒子模拟)

    效果截图:粒子模拟代码展示:#include "Particle.h" /** 构造函数 */CParticle::CParticle(){ data = NULL; numpar ...

  3. Java 集合框架_中

    Set接口 特点: [1]Set接口表示一个唯一.无序的容器(和添加顺序无关) Set接口常用实现类有 HashSet [1]HashSet是Set接口的实现类,底层数据结构是哈希表. [2]Hash ...

  4. [神经网络]一步一步使用Mobile-Net完成视觉识别(三)

    1.环境配置 2.数据集获取 3.训练集获取 4.训练 5.调用测试训练结果 6.代码讲解 本文是第三篇,获取tfboard训练集. 前面我们拿到了所有图片对应的标注信息的xml文件,现在我们需要先把 ...

  5. cv2.bilateralFilter 双边滤波

    双边滤波bilateralFilter 双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单.非迭代.局部处 ...

  6. CentOS安装RabbitMQ步骤

    1.安装gcc yum install gcc 安装 ncurses-devel yum install ncurses-devel 2.安装erlang 下载安装包 http://www.erlan ...

  7. Bootstrap历练实例:可取消的警告

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. FTPClient:enterLocalPassiveMode()方法简单说明

    问题:在Java程序中,使用FTPClient下载FTP文件的时候,可以下载到FTP服务器上的文件夹,但是里面的文件没有下载到本地. 分析:这个涉及到FTP在使用的过程中,客户端和服务端连接过程中,端 ...

  9. Roman Numeral Converter-freecodecamp算法题目

    Roman Numeral Converter 1.要求 将给定的数字转换成罗马数字 所有返回的罗马数字都应该是大写形式 2.思路 分别定义个位.十位.百位.千位的对应罗马数字的数组 用Math.fl ...

  10. Diff Two Arrays-freecodecamp算法题目

    Diff Two Arrays(比较两个数组) 1.要求 比较两个数组,然后返回一个新数组 该数组的元素为两个给定数组中所有独有的数组元素.换言之,返回两个数组的差异. 2.思路 定义一个新数组变量, ...