(极简配置)解释Maven-Setting文件mirrors配置本地私服多个仓库和远程仓库

既想用本地私服里的jar包,又想从远程中央仓库拉取私服里没有的jar包。

通过mirror配置仓库,mirror会拦截对于指定仓库的依赖请求,将请求指向指定的url.

<mirrors>
    <mirror>
      <!-- //唯一标识一个mirror,随便起名 -->
      <id>maven-release</id>
      <!-- //代表了一个镜像的替代位置,例如maven-releases就表示去maven-releases仓库的请求会指向下面所设置的url地址 -->
      <mirrorOf>maven-releases</mirrorOf>
      <!-- //没用,相当于注释 -->
      <name>Human Readable Name for this Mirror.</name>
      <!-- //mirror拦截了去maven-releases的请求,指向指定的url -->
      <url>http://mynexus.com/repositort/maven-releases</url>
    </mirror>
    
    <!--//再来指定一个snapshots的地址-->
     <mirror>
      <id>maven-snapshots</id>
      <mirrorOf>maven-snapshots</mirrorOf>
      <url>http://mynexus.com/repositort/maven-snapshots</url>
    </mirror>   
    
    <!--//如果不需要严格区分snapshots和releases,可以将url都指向public仓库,public里面可以设置包含多个本地仓库和远程仓库-->
     <mirror>
      <id>all</id>
      <!-- //mirrorOf设置为*,代表拦截所有请求,到url -->
      <mirrorOf>*</mirrorOf>
      <url>http://mynexus.com/content/groups/public</url>
    </mirror>   

    <!--//指定中央仓库地址,<mirrorOf>设置为central,私服里没有相关资源时去中央仓库找-->
    <mirror>    
      <id>central</id>    
      <mirrorOf>central</mirrorOf>    
      <name>aliyun maven</name>    
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>    
    </mirror>  

重要说明:
如果指定多个相同的mirrorOf,镜像只会执行第一个位置mirror。
官网说明如下:http://maven.apache.org/guides/mini/guide-mirror-settings.html

设置多个相同的mirrorOf只会识别第一个url拉取jar包。配置的多个mirror可以都放着不影响,只有第一个有效,建议选取一个镜像下载比较快的放在第一个。

** 如果非要用到多个releases或者snapshots仓库,可以弄个组(public),把需要的加入到组里,就会按照nexus里public里设置的仓库顺序,轮训访问各个仓库,直到下载到匹配到的。**

说明:
配置了mirror之后,setting里对应配置的<profile>-<repositories>就无效了哦,因为mirror把访问相关仓库的请求都给拦截了,重新指向了url。

### 设置Maven私有仓库 为了使Maven能够连接至私有仓库并完成项目的打包工作,`settings.xml`文件中的配置至关重要。此文件允许定义服务器认证信息以及镜像设置。 #### 定义服务器认证信息 对于私有仓库而言,通常需要提供用户名密码来进行身份验证。这些信息应当放置于`<servers>`节点之下: ```xml <servers> <server> <id>private-username</username> <password>your-password</password> </server> </servers> ``` 这里的`<id>`字段对应着后续在POM文件或其他地方引用该仓库时所使用的唯一标识符[^4]。 #### 配置私有仓库作为镜像源 为了让Maven优先考虑使用特定的私有仓库而不是中央仓库来解析依赖关系,在`<mirrors>`部分添加相应的条目是非常必要的: ```xml <mirrors> <mirror> <id>private-mirror</id> <name>Private Mirror Repository</name> <url>https://repo.yourcompany.com/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> ``` 上述配置意味着所有的请求都将被重定向到指定URL下的私有仓库中去处理。 #### 将私有仓库设为发布目标 如果希望将构建产物部署回同一个私有仓库,则还需要进一步修改`<distributionManagement>`节内的内容(这部分一般位于项目的`pom.xml`内),指明用于发布的远程仓库位置: ```xml <distributionManagement> <repository> <id>internal-release</id> <name>Internal Release Repository</name> <url>https://repo.yourcompany.com/service/local/staging/deploy/maven2/</url> </repository> <snapshotRepository> <id>internal-snapshot</id> <name>Internal Snapshot Repository</name> <url>https://repo.yourcompany.com/service/local/snapshots/deploy/maven2/</url> </snapshotRepository> </distributionManagement> ``` 这段XML片段区分了正式版本(`release`)与快照版(`snapshot`)的不同上传路径,并且同样通过ID关联到了之前提到过的认证信息上[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值