今天从svn检出了一个jeecg的工程
首先我的settings文件的镜像<mirrorOf>标签里一直是:
<mirrorOf>*</mirrorOf>
mirror是连得aliyun的
接下来我的流程是:一开始用了自己的maven仓库,然后pom文件中和jeecg相关的依赖都会报错。总监说jeecg有自己的包,阿里云下不下来
然后我用了总监给的库,他的库里都有相关的jar包。但是pom文件依然报错,这次是只有两三个东西找不到,我暂且记得有两个是:这两个当时是报错的。后来找了很多原因,我突然想到了pom文件的配置,发现我的配置和公司的不一样,然后在
这里看到了
点进去之后,发现公司的配的和这里说的是一样的:
mirrorOf排除了jeecg的两个地址,这两个地址不被aliyun拦截,而是走jeecg的地址。这我又纳闷了,按说我该有的jar包在总监给的库里都有了,maven为什么还要访问jeecg的地址呢:
我把这两个排除的东西在pom.xml里搜索了一下,看到了:
这几个标签我也就大致查了一下意思,并不是太懂,然后我就草率地推测了:
pom文件里写的这段话,在项目building的时候会去访问这个地址,那两个报错的依赖尽管我仓库里有,但是我的settings文件里对所有远程仓库都拦截到aliyun,maven访问不到,也就会报错。
那么maven对jar包下载的流程是怎样的呢?我推测:maven下载jar包的时候,会先访问jar包的远程库,看远程库的jar包本地有没有,本地没有就下载,本地有就不下载。
(这是一个顺序问题,以前我一直以为maven会先看本地库有没有,有的话就不下载,没有的话就访问远程库下载。但是这里我推测的是,他会先去访问远程库,看远程库和本地库的jar包相关信息是不是一样的,一样就下载,不一样就不下载。)
settings文件改好之后,我又用了自己的maven库,下载完成后也是不报错的。就是这个原因