当前位置:   article > 正文

maven中mirror镜像和repository仓库配置_maven mirror和repository

maven mirror和repository

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

这是在项目的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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用阿里云的镜像仓库来加速,一般情况下,这样是没有毛病的。
接着往下看

4. mirror与reporsitory

上面配置,乍一看没毛病,但是,你会发现无论你怎么刷新maven,都拉不到pentaho-public里的jar包。

这是因为阿里云公共仓库中没有pentaho-public里的jar包。

有人说,pom.xml中不是配置了reporsitory吗,应该先从这里拉取。

这是不对的。

4.1 mirror与reporsitory的关系

mirror是reporsitory的代理。

根据上面配置,aliyunmavenpentaho-public的代理,所以,访问https://nexus.pentaho.org/content/groups/omni的请求都被代理到了阿里云。阿里云没有这些jar包,所以,拉不下来。

那咋整呢?看下面

4.2 mirrorOf的作用

镜像配置中有这么一条

<mirrorOf>*</mirrorOf>
  • 1

先看字面意思,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下载
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

因此上面的问题我们就可以这样解决了:

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*,!pentaho-public</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/87908
推荐阅读
相关标签
  

闽ICP备14008679号