详解Maven的setting配置文件中mirror和repository的区别

  • proxy是服务器不能直接访问外网时需要设置的代理服务,不常用
  • server是服务器要打包上传到私服时,设置私服的鉴权信息
  • repository是服务器下载jar包的仓库地址
  • mirror是用于替代仓库地址的镜像地址

仓库(repository)

repository就是个仓库,maven里有两种仓库,本地仓库和远程仓库。 远程仓库相当于公共的仓库,大家都能看到。
本地仓库是你本地的缓存副本,只有你看的到,主要起缓存作用。
当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。如果有则直接返回,否则会向远程仓库请求,并被缓存到本地仓库。
远程仓库既可以在setting.xml中配置也可以在工程的pom.xml文件里指定。

镜像(mirror)

简单而言,mirror可以拦截对远程仓库的请求,改变对目标仓库的下载地址。 mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径。
当maven需要到的依赖jar包不在本地仓库时,就需要到远程仓库下载,这个时候如果maven的setting.xml中配置了镜像,而且镜像配置的规则中匹配到目标仓库时,maven就直接去镜像中配置的仓库地址进行依赖jar的下载,而不会去其他的地方进行下载。

镜像拦截规则

规则说明
<mirrorOf>*</mirrorOf>匹配所有远程仓库。
<mirrorOf>external:*</mirrorOf>匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
<mirrorOf>repo1,repo2</mirrorOf>匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
<mirrorOf>*,!repo1</miiroOf>匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

常用的setting配置

中央仓库

这里使用阿里云公共仓库镜像,这样配置会拦截所有的jar请求,只从阿里云下载jar包

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

公司有自己的私服,怎么办呢
使用镜像拦截,jar包请求先拦截请求阿里云,找不到再去私有仓库服务器

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*,!myrepository</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
<profiles>
<profile>  
  <id>dev</id>
  <repositories>
    <repository>
      <id>myrepository</id>
      <url>http://******/repository/maven-public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
      </snapshots>
    </repository>
  </repositories>
</profile> 
</profiles>

<activeProfiles>
  <activeProfile>dev</activeProfile>
</activeProfiles>

snapshots更新策略

在公司内部测试,一般需要实时更新到最新的snapshots包

在repository节点增加如下配置,可以保证每次编译都保证可以获取到最新的包。

<snapshots>
  <enabled>true</enabled>
  <updatePolicy>always</updatePolicy>
</snapshots>

或者

修改打包命令,添加-U参数,如:mvn clean install package -U -DskipTests=true,-U参数的含义是update-snapshots,保证可以更新快照包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大佬腿好粗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值