maven - mirrorOf 的坑、多镜像切换(避免一切无厘头报错)

国内,用中央仓库(https://repo1.maven.org/maven2/)获取包太慢。
因此,我们都用镜像。

# 镜像配置

<mirror>
      <id>tz-mirrorid>
      <mirrorOf>external:*,!mmkjmirrorOf>
      <name>tz test nexus repositoryname>
      <url>http://xxxxx:30003/repository/maven-proxyurl>
mirror>
  • id 唯一标识
  • mirrorOf 指定镜像的规则。
    就是什么情况会从镜像仓库拉取,而不是从原本的仓库拉取
    可选项参考链接:
    * 匹配所有
    external:* 除了本地缓存之后的所有仓库
    repo,repo1 repo 或者 repo1。 这里repo指的是仓库的id,下文会提到
    *,!repo1 除了repo1的所有仓库
  • name 名称描述
  • url 地址

# maven配置 mirrorOf 坑

记录maven配置 mirrorOf 坑

我们用maven镜像,通常就是无脑从网上粘贴这样一段代码 ↓

<mirror>
    <id>nexus-aliyunid>
    <mirrorOf>*mirrorOf>  
    <name>Nexus aliyunname>
    <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>

注意:
这里,mirrorOf 配置成 * 就代表我们通过访问阿里云的maven仓库从而访问网路上所有的远程仓库

也就是说,我们只会从 阿里云 现有仓库下包,如果阿里云没有,我们必须手动更改配置!

因此,我们需要改成 central

  • 如果配置成central,就代表我们访问阿里云的central仓库,就是阿里的中央库(http://central.maven.org/maven2)
  • 如果配置成repo1,就代表通过阿里云访问http://repo1.maven.org/maven2,
    阿里云和这些远程仓库之间必须可以镜像,存在一定的镜像关系。

# 配置多个mirror 和 切换 mirror

配置多个 mirror 和简单。
但是,每次切换 mirror 都要改配置文件,很麻烦,希望能够不改动配置文件的情况下,动态切换mirror配置。

我们知道 settings.xml 中可以使用变量,可以尝试使用变量解决。

<mirrors>
  <mirror>
    <id>aliyunid>
    <url>https://maven.aliyun.com/repository/publicurl>
    <mirrorOf>${aliyun}mirrorOf>
  mirror>
  <mirror>
    <id>neteaseid>
    <url>http://mirrors.163.com/maven/repository/maven-public/url>
    <mirrorOf>${netease}mirrorOf>
  mirror>
  <mirror>
    <id>defaultid>
    <url>http://192.168.0.100/nexus/repository/maven-public/url>
    <mirrorOf>centralmirrorOf>
  mirror>
mirrors>

我们知道,默认情况下配置多个mirror的情况下,只有第一个生效。
那么我们可以将 id 改为 default 作为默认值,前面配置的使用环境变量动态切换。
(如果没有 default , 会用第一个 mirror)

默认情况下,执行: mvn help:effective-settings 可以看到使用的是私服。

  • 如果希望使用阿里云镜像,如下执行:
    mvn help-effective-settings -Daliyun=central

  • 同样的道理,使用网易镜像,则执行:
    mvn help:effective-settings -Dnetease=central


最后,附上几个仓库 mirror

   <mirror>
      <id>alimavenid>
      <name>aliyun mavenname>
      <url>http://maven.aliyun.com/nexus/content/groups/public/url>
      <mirrorOf>centralmirrorOf>
   mirror>

	    <mirror>    
      <id>uiid>    
      <mirrorOf>centralmirrorOf>    
      <name>Human Readable Name for this Mirror.name>    
      <url>http://uk.maven.org/maven2/url>    
    mirror>    
 
	    <mirror>    
      <id>ibiblioid>    
      <mirrorOf>centralmirrorOf>    
      <name>Human Readable Name for this Mirror.name>    
      <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/url>    
    mirror>  
 
    <mirror>    
      <id>jboss-public-repository-groupid>    
      <mirrorOf>centralmirrorOf>    
      <name>JBoss Public Repository Groupname>    
      <url>http://repository.jboss.org/nexus/content/groups/publicurl>    
    mirror> 
    
    <mirror>    
      <id>OSCNid>  
      <name>OSChina Centralname>         
      <url>http://maven.oschina.net/content/groups/public/url>  
      <mirrorOf>centralmirrorOf>    
    mirror>

maven的中央(central)仓库的镜像地址

(最快) http://maven.ibiblio.org/maven2/
http://central.maven.org/maven2/
http://repo1.maven.apache.org/maven2/
http://repo1.maven.org/maven2/
http://mirrors.ibiblio.org/pub/mirrors/maven2/
https://repository.jboss.org/nexus/content/groups/public/
http://repo2.maven.org/maven2/


  • maven 多仓库和镜像设置
  • maven 中配置多个mirror如何切换镜像
  • 浅谈maven setting.xml 设置的mirrorof标签作用。

最快的 maven repository–阿里镜像仓库
国内最好的maven repository
第一步:修改maven根目录下的conf文件夹中的setting.xml文件,内容如下:

    <mirror>
      <id>alimavenid>
      <name>aliyun mavenname>
      <url>http://maven.aliyun.com/nexus/content/groups/public/url>
      <mirrorOf>centralmirrorOf>        
    mirror>

第二步: pom.xml文件里添加

<repositories>  
        <repository>  
            <id>alimavenid>  
            <name>aliyun mavenname>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/url>  
            <releases>  
                <enabled>trueenabled>  
            releases>  
            <snapshots>  
                <enabled>falseenabled>  
            snapshots>  
        repository>  
repositories>  

你可能感兴趣的:(Eclipse/Maven,-,❤️,❤️)