这篇文章主要介绍了详解maven的setting配置文件中mirror和repository的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 .
这个时候如果mavensetting.xml中配置了镜像 , 而且镜像配置的规则中匹配到目标仓库时 ,
maven认为目标仓库被镜像了, 不会再去被镜像仓库下载依赖jar包, 而是直接去镜像仓库下载.
简单而言, mirror可以拦截对远程仓库的请求 , 改变对目标仓库的下载地址
repository
repository就是个仓库.
maven里有两种仓库,本地仓库和远程仓库。
远程仓库相当于公共的仓库,大家都能看到。
本地仓库是你本地的缓存副本,只有你看的到,主要起缓存作用。
当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。
如果有则直接返回,否则会向远程仓库请求,并被缓存到本地仓库。
远程仓库可以在工程的pom.xml文件里指定。
** * ** * * *false * *central * *Maven Repository Switchboard * ***[http://repo1.maven.org/maven2 * *
本地仓库默认在你本地的用户目录下的.m2/repository目录下。
mirror
mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径。
比如,上班的时候在公司,用电信的网络,连的是电信的仓库。
回到家后,是网通的网络,我想连网通的仓库,就可以通过mirror配置,统一把我工程里的仓库地址都改成联通的,而不用到具体工程配置文件里一个一个地改地址。
mirror的配置在.m2/settings.xml里。如:
** * ** * * *UK * *UK Central * ***[http://uk.maven.org/maven2 ](http://uk.maven.org/maven2%3C/url%3E%C2%A0%C2%A0)* *central * *
这样的话,就会给上面id为central的远程仓库做了个镜像。
以后向central这个仓库发的请求都会发到http://uk.maven.org/maven2而不是http://repo1.maven.org/maven2了。
如果填*,就会替代所有仓库。
高级镜像配置
为了满足一些复杂的需求,Maven还支持更高级的镜像配置:
1.
匹配所有远程仓库。
2.
匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
3.
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
4.
匹配所有远程仓库,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
aliyun_nexus *,!maven_nexus_201 http://maven.aliyun.com/nexus/content/groups/public/
maven项目下的pom.xml配置一个远程仓库
maven_nexus_201 maven_nexus_201 default http://192.168.0.201:8081/nexus/content/groups/public/ true
在http://192.168.0.201:8081/nexus下上传第三方jar包依赖
登陆已经安装好的nexus私有仓库,如图:
如何通过网页方式将jar包上传到nexus?
点击左边菜单“Repositories”,选择右边列表“3rd party“
如何通过网页方式将jar包上传到nexus?
点击“3rd party”,选择artifact Upload,如下图:
如何通过网页方式将jar包上传到nexus?
在artifact Upload界面显示的有GAV Parameter,groupId,artifactId,Version,Packaging等等参数,界面如图:
如何通过网页方式将jar包上传到nexus?
将以上参数填完之后,选择要上传的jar包,点击”add artifact“,最后点击”save“保存按钮即可,如下图所示:
如何通过网页方式将jar包上传到nexus?
maven项目下的pom.xml引入依赖
com.alipay sdk-java 20170615110434
以上就是详解maven的setting配置文件中mirror和repository的区别的详细内容,更多请关注0133技术站其它相关文章!