1、Maven配置文件中 mirror和repository的区别
1.1 repository
repository就是个仓库,maven里有两种仓库,Local Repository(本地仓库)和Remote Repository(远程仓库)。
1.1.1 Remote Repository(远程仓库)主要有3种
- 中央仓库:http://repo1.maven.org/maven2/
- 私服:内网自建的maven repository,其URL是一个内部网址
- 其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository等。
1.1.2 本地和远程的区别
远程仓库相当于公共的仓库,大家都能看到。
本地仓库是你本地的缓存副本,只有你看的到,主要起缓存作用。
当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。 如果有则直接返回,否则会向远程仓库请求,并被缓存到本地仓库。
远程仓库可以在工程的pom.xml文件里指定。 如果没指定,默认会到http://repo1.maven.org/maven2 这个地方去请求插件和依赖包
<repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Maven Repository Switchboard</name> <url>http://repo1.maven.org/maven2</url> </repository>
本地仓库默认在你本地的用户目录下的.m2/repository目录下
1.2 mirror
mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径。例如,上班的时候在公司,用电信的网络,连的是电信的仓库。回到家后,是网通的网络,我想连网通的仓库,就可以通过mirror配置,统一把我工程里的仓库地址都改成联通的,而不用到具体工程配置文件里一个一个地改地址。
mirror的配置在.m2/settings.xml里。如:
<mirrors>
<mirror>
<id>UK</id>
<name>UK Central</name>
<url>http://uk.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
这样的话,就会给上面id为central的远程仓库做了个镜像。以后向central这个仓库发的请求都会发到 http://uk.maven.org/maven2 而不是 http://repo1.maven.org/maven2 了。
1.3 高级镜像配置
*
匹配所有远程仓库。external:*
匹配所有远程仓库,使用localhost的除外,使用file:// 协议的除外。也就是说,匹配所有不在本机上的远程仓库。repo1,repo2
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。*,!repo1
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。
2、maven中央仓库集
可以自行转化为mirror
1、阿里中央仓库
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
2.camunda.com 中央仓库
<repository>
<id>activiti-repos2</id>
<name>Activiti Repository 2</name>
<url>https://app.camunda.com/nexus/content/groups/public</url>
</repository>
3.alfresco.com 中央仓库
<repository>
<id>activiti-repos</id>
<name>Activiti Repository</name>
<url>https://maven.alfresco.com/nexus/content/groups/public</url>
</repository>
4.spring.io 中央仓库
<repository>
<id>springsource-repos</id>
<name>SpringSource Repository</name>
<url>http://repo.spring.io/release/</url>
</repository>
5.maven.apache.org 中央仓库
<repository>
<id>central-repos</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
</repository>
6.maven.org 中央仓库
<repository>
<id>central-repos1</id>
<name>Central Repository 2</name>
<url>http://repo1.maven.org/maven2/</url>
</repository>
7.oschina 中央仓库
<repository>
<id>oschina-repos</id>
<name>Oschina Releases</name>
<url>http://maven.oschina.net/content/groups/public</url>
</repository>
8.oschina thinkgem 中央仓库
<repository>
<id>thinkgem-repos</id>
<name>ThinkGem Repository</name>
<url>http://git.oschina.net/thinkgem/repos/raw/master</url>
</repository>
9.java.net 中央仓库
<repository>
<id>java-repos</id>
<name>Java Repository</name>
<url>http://download.java.net/maven/2/</url>
</repository>
10.github.com 中央仓库
<repository>
<id>thinkgem-repos2</id>
<name>ThinkGem Repository 2</name>
<url>https://raw.github.com/thinkgem/repository/master</url>
</repository>
前六个可以正常使用,后四个如若要使用可能需要一些神奇的操作,在这偶就不说了...
参考:
欢迎关注我的公众号【穿着条纹睡衣的男孩】,因为才注册,所以需要大家的大力支持啊!!! 关注后可领取java和c++的学习资源视频,作为礼物!!!