maven中mirror镜像和repository仓库配置
Posted 阿拉的梦想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven中mirror镜像和repository仓库配置相关的知识,希望对你有一定的参考价值。
maven仓库和镜像配置
1. 名词解释
repository: 仓库,存放jar的具体位置;
mirror: 镜像,为仓库做代理,加速仓库中jar的下载,其实就是把把访问仓库的请求转发到了镜像指定的地址;
2. reportsitory仓库配置
我们一般在pom.xml中会见到下面配置:
<repositories>
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>https://nexus.pentaho.org/content/groups/omni</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
这是在项目的pom.xml中配置了一个仓库,仓库的id是pentaho-public,注意仓库地址,并不是常用地址,说明项目中有些包在常用仓库是下载不到的,需要到这个指定仓库去下载。
3. mirror镜像配置
在maven的settings.xml中,我们一般这样配置:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
使用阿里云的镜像仓库来加速,一般情况下,这样是没有毛病的。
接着往下看
4. mirror与reporsitory
上面配置,乍一看没毛病,但是,你会发现无论你怎么刷新maven,都拉不到pentaho-public里的jar包。
这是因为阿里云公共仓库中没有pentaho-public里的jar包。
有人说,pom.xml中不是配置了reporsitory吗,应该先从这里拉取。
这是不对的。
4.1 mirror与reporsitory的关系
mirror是reporsitory的代理。
根据上面配置,aliyunmaven是pentaho-public的代理,所以,访问https://nexus.pentaho.org/content/groups/omni的请求都被代理到了阿里云。阿里云没有这些jar包,所以,拉不下来。
那咋整呢?看下面
4.2 mirrorOf的作用
镜像配置中有这么一条
<mirrorOf>*</mirrorOf>
先看字面意思,mirrorOf 就是 mirror of ,翻译过来就是谁的镜像。
谁的呢?*的。大家应该能理解,星号代表所有。
所有的什么呢?所有的仓库,也就是reporsitory,那么这些repository当然包括我们自己配置的pentaho-public仓库。
既然如此,我们把mirrorOf的值改一下就行了。
mirrorOf的配置方法:
mirrorOf=* //刚才说过,mirror代理所有,你配置的repository中的地址就不起作用了
mirrorOf=pentaho-public //mirror只代理pentaho-public,你配置pentaho-public仓库的地址不起作用了。但对你配置的其他仓库没有影响,其他仓库也不会使用这个mirror来加速。
mirrorOf=*,!pentaho-public //!表示非运算,排除你配置的pentaho-public仓库,其他仓库都被镜像代理了。就是请求下载pentaho-public的仓库的jar不使用mirror的url下载,其他都是用mirror配置的url下载
mirrorOf=external:* //如果本地库存在就用本地库的,如果本地没有所有下载就用mirror配置的url下载
因此上面的问题我们就可以这样解决了:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*,!pentaho-public</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
以上是关于maven中mirror镜像和repository仓库配置的主要内容,如果未能解决你的问题,请参考以下文章
IDEA自带maven报错maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories解决