maven镜像仓库配置(多镜像自动切换)

大家在使用IDEA的时候会遇到这样的一个问题,就是在下载源代码和资源文档的时候,有些镜像仓库里面没有源代码和资源文档,然后会导致下载失败。
这时候就需要多个镜像仓库的地址了。

附上我自己的配置文件:

  <mirrors>
    <!-- 阿里云仓库 -->
    <!-- 中央仓库在中国的镜像 -->
   <mirror>
       <id>alimaven</id>
       <name>aliyun maven</name>
       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
       <mirrorOf>central</mirrorOf>
   </mirror>

   <mirror>
       <id>central</id>
       <name>Maven Repository Switchboard</name>
       <url>http://repo1.maven.apache.org/maven2/</url>
       <mirrorOf>*</mirrorOf>
   </mirror>
   <!-- sping  -->
   <mirror>
       <id>sprintio</id>
       <mirrorOf>central</mirrorOf>
       <name>Human Readable Name for this Mirror.</name>
       <url>https://repo.spring.io/libs-snapshot/</url>
       <mirrorOf>*</mirrorOf>
   </mirror>
   
   <!-- google  -->
   <mirror>
       <id>google</id>
       <name>google maven</name>
       <url>https://maven.google.com/</url>
       <mirrorOf>*</mirrorOf>
   </mirror>


    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>

mirror标签中有个 mirrorOf标签,
注意: 值为center,表示当前镜像为远程中央仓库的镜像

mirrorOf可以理解“为某个仓库(repository)的做镜像”,填写的是repostoryId。
”*“ 的意思就是匹配所有的仓库(repository)。
相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,	
重定向到mirror里配置的地址。apache-maven的settings.xml不做任何配置时是有默认的仓库的,这个仓库就是central仓库,默认值是https://repo.maven.apache.org/maven2/,我们可以配置mirrorOf=central只镜像默认的central仓库。如果你只配置了mirrorOf=”my-repo-id“没有配置central或*,那么请求maven会判断,首先在默认的central仓库https://repo.maven.apache.org/maven2/找依赖,如果找不到就去my-repo-id对应的仓库找,遍历所有仓库后找不到就报错。

猜你喜欢

转载自blog.csdn.net/qq_16733389/article/details/131934617