Maven 配置文件中mirrorOf与repository节点的理解

maven 配置文件setting.xml中的mirrorOf与repository节点一直分不太清楚,现在根据自己的整理归纳一下:

1.maven中的仓库(Repository)有哪些类型?

包括本地仓库(配置文件中的localRepository节点指定的一个文件夹)和远程仓库,其中远程仓库又可以分中央仓库、私服仓库,中央仓库是maven官方指定的仓库,可以理解为“寻找的最后一站”。私服可以是公司内部搭建的Maven仓库管理器像阿里的一些仓库也可以是自己搭建的;

2.项目下载依赖的顺序是怎么样的?

本地仓库---->私服----->中央仓库

3.什么是mirror?

仓库的镜像,就是说如果一个仓库(repository)配置了对应的mirror,那么在需要从这个仓库下载依赖的时候会自动请求mirror中的地址;比如以下配置,对ali_mirro的请求会自动被重定向到id为ali中的url



 
   
     
      ali  
      ali_mirro  
      ali  
      http://maven.aliyun.com/nexus/content/groups/public/ 
     
    
   
     
       
         
          ali_mirro  
          ali_mirro  
          http://xxxx/  
          default 
         
       
     
   

4.mirrorOf的写法

*    代表所有,就是说所有在本地仓库无法找到的依赖都会去该mirror中查找 ;

external:*  就是说如果一个依赖可以在localhost的或者基于文件的仓库中可以找到,就不会请求该mirror,示例:



 
   
     
      second  
      external:*  
      ali  
      http://maven.aliyun.com/nexus/content/groups/public/ 
     
    
   
     
       
         
          ali_mirro  
          ali_mirro  
          http://localhost:8888/****  
          default 
         
       
     
   

该配置中,如果可以在ali_mirro中找到依赖,是不会去second中找的,什么是基于文件的仓库呢,就是这种:


  my-repo
  file:///C:\my-repo

相当于在指定的文件夹中寻找

repo,repo1 这种相当于去repo和repo1中寻找;

*,!repo1  这种相当于去除了repo1的仓库中寻找

参考:

http://maven.apache.org/settings.html

https://stackoverflow.com/questions/41244789/maven-mirror-tag-meaning-of-external-parameter

https://my.oschina.net/sunchp/blog/100634

你可能感兴趣的:(学习笔记)