gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解maven的setting配置文件中mirror和repository的区别由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 . 。

这个时候如果mavensetting.xml中配置了镜像 , 而且镜像配置的规则中匹配到目标仓库时 .

maven认为目标仓库被镜像了, 不会再去被镜像仓库下载依赖jar包, 而是直接去镜像仓库下载. 。

简单而言, mirror可以拦截对远程仓库的请求 , 改变对目标仓库的下载地址 。

repository 。

repository就是个仓库. 。

maven里有两种仓库,本地仓库和远程仓库.

远程仓库相当于公共的仓库,大家都能看到.

本地仓库是你本地的缓存副本,只有你看的到,主要起缓存作用.

当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有.

如果有则直接返回,否则会向远程仓库请求,并被缓存到本地仓库.

远程仓库可以在工程的pom.xml文件里指定.

如果没指定,默认会到http://repo1.maven.org/maven2这个地方去请求插件和依赖包.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*<repository> *
 
*  <snapshots> *
 
*  <enabled> false </enabled> *
 
*  </snapshots> *
 
*  <id>central</id> *
 
*  <name>maven repository switchboard</name> *
 
*  <url>**[http: //repo1.maven.org/maven2</url>*
 
* </repository> *

本地仓库默认在你本地的用户目录下的.m2/repository目录下.

mirror 。

mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径.

比如,上班的时候在公司,用电信的网络,连的是电信的仓库.

回到家后,是网通的网络,我想连网通的仓库,就可以通过mirror配置,统一把我工程里的仓库地址都改成联通的,而不用到具体工程配置文件里一个一个地改地址.

mirror的配置在.m2/settings.xml里。如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*<mirrors> *
 
* <mirror> *
 
* <id>uk</id> *
 
* <name>uk central</name> *
 
* <url>**[http: //uk.maven.org/maven2</url> ](http://uk.maven.org/maven2%3c/url%3e%c2%a0%c2%a0)*
 
* <mirrorof>central</mirrorof> *
 
* </mirror> *
 
*</mirrors> *

这样的话,就会给上面id为central的远程仓库做了个镜像.

以后向central这个仓库发的请求都会发到http://uk.maven.org/maven2而不是http://repo1.maven.org/maven2了.

<mirrorof>central</mirrorof>里是要替代的仓库的id.

如果填*,就会替代所有仓库.

高级镜像配置 。

为了满足一些复杂的需求,maven还支持更高级的镜像配置:

1.<mirrorof>*</mirrorof> 匹配所有远程仓库.

2.<mirrorof>external:*</mirrorof> 匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库.

3.<mirrorof>repo1,repo2</mirrorof> 匹配仓库repo1和repo2,使用逗号分隔多个远程仓库.

4.<mirrorof>*,!repo1</miiroof> 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除.

需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,maven仍将无法访问被镜像仓库,因而将无法下载构件.

例子 。

个人的maven配置了阿里的镜像 , 而项目中需要使用到一些第三方jar包, 为了方便引入 , 已上传到192.168.0.201的nexus私服下. 但由于个人maven阿里的镜像使用默认mirrorof规则=*, 所有的仓库都被镜像 , 不会再去192.168.0.201下下载第三方jar包 上传的第三方jar包目标路径 : http://192.168.0.201:8081/nexus/content/groups/public/com/alipay/sdk-java/20170615110434/sdk-java-20170615110434.pom 。

被镜像后路径 : http://maven.aliyun.com/nexus/content/groups/public/com/alipay/sdk-java/20170615110434/sdk-java-20170615110434.pom 所以需要修改镜像的mirrorof规则 , 避免默认从镜像中下载 。

maven的conf/setting.xml 。

?
1
2
3
4
5
6
7
8
9
10
11
<mirrors>
  <!--国内阿里云提供的镜像,非常不错-->
<mirror>
  <!-- this sends everything else to / public -->
  <id>aliyun_nexus</id>
  <!--对所有仓库使用该镜像,除了一个名为maven_nexus_201的仓库除外-->
  <!--这个名为maven_nexus_201的仓库可以在javamaven项目中配置一个repository-->
  <mirrorof>*,!maven_nexus_201</mirrorof>
  <url>http: //maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>

maven项目下的pom.xml配置一个远程仓库 。

?
1
2
3
4
5
6
7
8
9
10
11
12
<repositories>
   <!-- 192.168 . 0.201 远程仓库 -->
   <repository>
    <id>maven_nexus_201</id>
    <name>maven_nexus_201</name>
    <layout> default </layout>
    <url>http: //192.168.0.201:8081/nexus/content/groups/public/</url>
    <snapshots>
     <enabled> true </enabled>
     </snapshots>
   </repository>
</repositories>

在下上传第三方jar包依赖 。

登陆已经安装好的nexus私有仓库,如图:

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

如何通过网页方式将jar包上传到nexus?

点击左边菜单“repositories”,选择右边列表“3rd party“ 。

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

如何通过网页方式将jar包上传到nexus?

点击“3rd party”,选择artifact upload,如下图:

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

如何通过网页方式将jar包上传到nexus?

在artifact upload界面显示的有gav parameter,groupid,artifactid,version,packaging等等参数,界面如图:

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

如何通过网页方式将jar包上传到nexus?

将以上参数填完之后,选择要上传的jar包,点击”add artifact“,最后点击”save“保存按钮即可,如下图所示:

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

如何通过网页方式将jar包上传到nexus?

maven项目下的pom.xml引入依赖 。

?
1
2
3
4
5
<dependency>
  <groupid>com.alipay</groupid>
  <artifactid>sdk-java</artifactid>
  <version> 20170615110434 </version>
</dependency>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://www.jianshu.com/p/274c363ffd7c 。

最后此篇关于详解maven的setting配置文件中mirror和repository的区别的文章就讲到这里了,如果你想了解更多关于详解maven的setting配置文件中mirror和repository的区别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com