相关文章推荐
火爆的茴香  ·  Unable to synchronize ...·  8 月前    · 
火爆的茴香  ·  jQuery ...·  8 月前    · 
私奔的领结  ·  Android ...·  9 小时前    · 
暗恋学妹的投影仪  ·  Android ...·  9 小时前    · 
精明的茶叶  ·  拦截tablayout ...·  9 小时前    · 
傻傻的凳子  ·  TabLayout ...·  9 小时前    · 
温柔的野马  ·  XMLHttpRequest.withCre ...·  9 小时前    · 

一、Repository(仓库)

手动下载jar包web地址

https://mvnrepository.com/

https://search.maven.org/

1.1 Maven仓库主要有2种:

  • remote repository:远程公共仓库,全世界的maven客户端都能访问到,可以用URL的形式访问
  • local repository:本地仓库
  • 1.2 Remote Repository主要有3种:

  • 中央仓库: https://repo1.maven.org/maven2/
  • 私服:内网自建的maven repository,其URL是一个内部网址
  • 其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository、阿里、华为等头部互联网公司建立的仓库
  • repository里存放的是各种jar包和maven插件。当向仓库请求插件或依赖的时候,会先检查local repository,如果local repository有则直接返回,否则会向remote repository请求,并缓存到local repository。也可以把做的东西放到本地仓库,仅供本地使用;或上传到远程仓库,供给别人使用。

    二、Mirror

    mirror相当本地maven客户端向服务端(maven中心仓库)下载jar包或插件请求的拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。

    2.1 没有配置mirror

    2.2 配置mirror

    此时 B 被称为 A 的镜像。

    2.3 mirrorOf标签

    mirrorOf标签里面放置的是要被镜像的Repository ID。为了满足一些复杂的需求,Maven还支持更高级的镜像配置:

    <mirrorOf>*</mirrorOf>
    匹配所有远程仓库。 
    <mirrorOf>repo1,repo2</mirrorOf>
    匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。 
    <mirrorOf>*,!repo1\</miiroOf>
    匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。 
    

    三、Repository与Mirror

    3.1 定义

    mirror表示两个Repository之间的关系

    3.2 目的

      配置两个Repository之间的镜像关系,一般是出于访问速度和下载速度考虑。

      例如, 有一个项目,需要在公司和住所都编码,并在项目pom.xml配置了A Maven库。在公司,是电信网络,访问A库很快,所以maven管理依赖和插件都从A库下载;在住所,是网通网络,访问A库很慢,但是访问B库很快。这时,在住所的setting.xml里,只要配置一下mirrors,让B库成为A库的mirror,即可不用更改项目pom.xml里对于A库的相关配置。

      如果该镜像仓库需要认证,则配置setting.xml中的server标签即可。

    3.3 注意

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

    四、maven私服

      私服是一种特殊的远程Maven仓库(一般使用Nexus搭建),它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。

      当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。

    优点主要有:

  • 节省外网宽带
  • 加速Maven构建
  • 部署第三方构件
  • 提高稳定性、增强控制:原因是外网不稳定
  • 降低中央仓库的负荷:原因是中央仓库访问量太大
  • 五、Maven仓库拉取构件原理图

    六、配置阿里云的maven仓库

    1、仓库配置

    在maven的settings.xml文件里的mirrors节点,添加如下镜像:

    <mirror>
        <name>阿里云私服</name>
        <!--唯一标识-->
        <id>aly</id>  
        <!--要拦截的仓库唯一标识-->
        <mirrorOf>central</mirrorOf>
    	<!--重定向后的仓库地址-->
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror>
    

    或者直接在profiles---->>>profile---->>>repositories节点,添加如下子节点:

    <repository>
        <name>阿里云私服n</name>
        <id>aly</id>
        <layout>default</layout>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        <!--配置不允许下载快照版依赖-->
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <!--配置允许下载稳定版本依赖-->
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
    

    Maven镜像地址大全

    阿里的镜像地址

    <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    

    华为的镜像地址

    <mirror>
    <id>huaweicloud</id>
    <name>mirror from maven huaweicloud</name>
    <url>http://repo.huaweicloud.com/repository/maven/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    

    使用华为Maven中央仓库时,需要在servers节点增加一个server子节点,内容如下:

    <server>
    <id>huaweicloud</id>
    <username>anonymous</username>
    <password>devcloud</password>
    </server>
    

    repo1.maven.org 镜像地址

    <mirror>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>http://repo1.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    

    JBoos 镜像地址

    <mirror>
    <id>jboss-public-repository-group</id>
    <name>JBoss Public Repository Group</name>
    <url>http://repository.jboss.org/nexus/content/groups/public</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    
     
    推荐文章