美文网首页
Maven 镜像

Maven 镜像

作者: 杰哥长得帅 | 来源:发表于2018-06-24 00:41 被阅读6次

    如果仓库 X 可以提供仓库 Y 存储的所有内容,那么就可以认为 X 是 Y 的一个镜像。换句话说,任何一个可以从仓库 Y 获得的构件,都能从它的镜像中获取。举个例子,http://maven.net.cn/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的服务。因此,可以配置 Maven 使用该镜像来替代中央仓库。编辑 settings.xml,代码如下:

    <settings>  
      ...  
      <mirrors>  
        <mirror>  
          <id>maven.net.cn</id>  
          <name>one of the central mirrors in china</name>  
          <url>http://maven.net.cn/content/groups/public/</url>  
          <mirrorOf>central</mirrorOf>  
        </mirror>  
      </mirrors>  
      ...  
    </settings>  
    

    该例中,<mirrorOf> 的值为 central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,用户也可以使用同样的方法配置其他仓库的镜像。另外三个元素 id、name、url 与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似地,如果该镜像需认证,也可以基于该 id 配置仓库认证

    关于镜像的一个更为常见的用法是结合私服。由于私服可以代理任何外部的公共仓库(包括中央仓库),因此,对于组织内部的 Maven 用户来说,使用一个私服地址就等于使用了所有需要的外部仓库,这可以将配置集中到私服,从而简化 Maven 本身的配置。在这种情况下,任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。这时,可以配置这样的一个镜像:

    <settings>  
      ...  
      <mirrors>  
        <mirror>  
          <id>internal-repository</id>  
          <name>Internal Repository Manager</name>  
          <url>http://192.168.1.100/maven2</url>  
          <mirrorOf>*</mirrorOf>  
        </mirror>  
      </mirrors>  
      ...  
    </settings
    

    该例中 <mirrorOf> 的值为星号,表示该配置是所有 Maven 仓库的镜像,任何对于远程仓库的请求都会被转至http://192.168.1.100/maven2/。如果该镜像仓库需要认证,则配置一个 id 为 internal-repository 的 <server> 即可。为了满足一些复杂的需求,Maven 还支持更高级的镜像配置:

    • <mirrorOf>*</mirrorOf> 匹配所有远程仓库
    • <mirrorOf>external:*</mirrorOf> 匹配所有远程仓库,使用 localhost 的除外,使用 file:// 协议的除外。也就是说,匹配所有不在本机上的远程仓库
    • <mirrorOf>repo1,repo2</mirrorOf> 匹配仓库 repo1 和 repo2,使用逗号分隔多个远程仓库
    • <mirrorOf>*,!repo1</miiroOf> 匹配所有远程仓库,repo1 除外,使用感叹号将仓库从匹配中排除

    需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven 仍将无法访问被镜像仓库,因而将无法下载构件

    相关文章

      网友评论

          本文标题:Maven 镜像

          本文链接:https://www.haomeiwen.com/subject/qbodyftx.html