详解maven的setting配置文件中mirror和repository的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
详解maven的setting配置⽂件中mirror和repository的区别当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 .
这个时候如果mavensetting.xml中配置了镜像 , ⽽且镜像配置的规则中匹配到⽬标仓库时 ,
maven认为⽬标仓库被镜像了, 不会再去被镜像仓库下载依赖jar包, ⽽是直接去镜像仓库下载.
简单⽽⾔, mirror可以拦截对远程仓库的请求 , 改变对⽬标仓库的下载地址
repository
repository就是个仓库.
maven⾥有两种仓库,本地仓库和远程仓库。
远程仓库相当于公共的仓库,⼤家都能看到。
本地仓库是你本地的缓存副本,只有你看的到,主要起缓存作⽤。
当你向仓库请求插件或依赖的时候,会先检查本地仓库⾥是否有。
如果有则直接返回,否则会向远程仓库请求,并被缓存到本地仓库。
远程仓库可以在⼯程的pom.xml⽂件⾥指定。
*<repository> *
* <snapshots> *
* <enabled>false</enabled> *
* </snapshots> *
* <id>central</id> *
* <name>Maven Repository Switchboard</name> *
* <url>**[/maven2</url>*
* </repository> *
本地仓库默认在你本地的⽤户⽬录下的.m2/repository⽬录下。
mirror
mirror就是镜像,主要提供⼀个⽅便地切换远程仓库地址的途径。
⽐如,上班的时候在公司,⽤电信的⽹络,连的是电信的仓库。
回到家后,是⽹通的⽹络,我想连⽹通的仓库,就可以通过mirror配置,统⼀把我⼯程⾥的仓库地址都改成联通的,⽽不⽤到具体⼯程配置⽂件⾥⼀个⼀个地改地址。
mirror的配置在.m2/settings.xml⾥。
如:
*<mirrors> *
* <mirror> *
* <id>UK</id> *
* <name>UK Central</name> *
* <url>**[/maven2</url> ](/maven2%3C/url%3E%C2%A0%C2%A0)*
* <mirrorOf>central</mirrorOf> *
* </mirror> *
*</mirrors> *
这样的话,就会给上⾯id为central的远程仓库做了个镜像。
<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的conf/setting.xml
<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>/nexus/content/groups/public/</url>
</mirror>
</mirrors>
maven项⽬下的pom.xml配置⼀个远程仓库
<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>
登陆已经安装好的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引⼊依赖
<dependency>
<groupId>com.alipay</groupId>
<artifactId>sdk-java</artifactId>
<version>20170615110434</version>
</dependency>
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。