https://my.oschina.net/qjx1208/blog/201085

摘要: 记录settings.xml的配置,理解mirror、repository、profile的关系

本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能发生在有些jar包的新版本没有在Maven仓库中及时更新。

Maven缺省的本地仓库地址为${user.home}/.m2/repository 。也就是说,一个用户会对应的拥有一个本地仓库。当然你可以通过修改${user.home}/.m2/settings.xml 配置这个地址:

Xml代码

  1. <settings>

  2. <localRepository> D:/java/repository</localRepository>

  3. </settings>

如果你想让所有的用户使用统一的配置那么你可以修改Maven主目录下的setting.xml:

${M2_HOME}/conf/setting.xml

repository是指在局域网内部搭建的repository,它跟central repository, jboss repository等的区别仅仅在于其URL是一个内部网址 
mirror则相当于一个代理,它会拦截去指定的远程repository下载构件的请求,然后从自己这里找出构件回送给客户端。配置mirror的目的一般是出于网速考虑。

不过,很多internal repository搭建工具往往也提供mirror服务,比如Nexus就可以让同一个URL,既用作internal repository,又使它成为所有repository的mirror。

高级的镜像配置: 
1.<mirrorOf>*</mirrorOf> 
匹配所有远程仓库。 这样所有pom中定义的仓库都不生效
2.<mirrorOf>external:*</mirrorOf> 
匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。 
3.<mirrorOf>repo1,repo2</mirrorOf> 
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。 
4.<mirrorOf>*,!repo1</miiroOf> 
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性,id是唯一标识一个mirror就不多说了,name貌似没多大用,相当于描述,url是官方的库地址,mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库。

我本以为镜像库是一个分库的概念,就是说当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载。但事实却不是这样,当第一个mirror中不存在a.jar的时候,并不会去第二个mirror中查找,甚至于,maven根本不会去其他的mirror地址查询。

后来终于知道,maven的mirror是镜像,而不是“分库”,只有当前一个mirror无法连接的时候,才会去找后一个,类似于备份和容灾。

还有,mirror也不是按settings.xml中写的那样的顺序来查询的。

所谓的第一个并不一定是最上面的那个。

当有id为B,A,C的顺序的mirror在mirrors节点中,maven会根据字母排序来指定第一个,所以不管怎么排列,一定会找到A这个mirror来进行查找,当A无法连接,出现意外的情况下,才会去B查询。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  3.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5.     <servers>
  6.         <server>
  7.             <id>repo-iss</id>
  8.             <username>deployment</username>
  9.             <password>deployment123</password>
  10.         </server>
  11.     </servers>
  12.     <mirrors>
  13.         <!-- osc镜像 -->
  14.         <mirror>
  15.             <!-- 镜像所有远程仓库,但不包括指定的仓库 -->
  16.             <id>mirror-osc</id>
  17.             <mirrorOf>external:*,!repo-osc-thirdparty,!repo-iss</mirrorOf>
  18.             <url>http://maven.oschina.net/content/groups/public/</url>
  19.         </mirror>
  20. <!--
  21.         <mirror>
  22.             <id>mirror-iss</id>
  23.             <mirrorOf>external:*</mirrorOf>
  24.             <url>http://10.24.16.99:5555/nexus/content/groups/public/</url>
  25.         </mirror>
  26. -->
  27.     </mirrors>
  28.     <profiles>
  29.         <profile>
  30.             <id>profile-default</id>
  31.             <repositories>
  32.                 <repository>
  33.                     <id>central</id>
  34.                     <url>http://central</url>
  35.                     <releases>
  36.                         <enabled>true</enabled>
  37.                     </releases>
  38.                     <snapshots>
  39.                         <enabled>false</enabled>
  40.                     </snapshots>
  41.                 </repository>
  42.                 <repository>
  43.                     <id>repo-osc-thirdparty</id>
  44.                     <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
  45.                     <releases>
  46.                         <enabled>true</enabled>
  47.                     </releases>
  48.                     <snapshots>
  49.                         <enabled>false</enabled>
  50.                     </snapshots>
  51.                 </repository>
  52.             </repositories>
  53.             <pluginRepositories>
  54.                 <pluginRepository>
  55.                     <id>central</id>
  56.                     <url>http://central</url>
  57.                     <releases>
  58.                         <enabled>true</enabled>
  59.                     </releases>
  60.                     <snapshots>
  61.                         <enabled>false</enabled>
  62.                     </snapshots>
  63.                 </pluginRepository>
  64.             </pluginRepositories>
  65.         </profile>
  66.         <profile>
  67.             <id>profile-iss</id>
  68.             <repositories>
  69.                 <repository>
  70.                     <id>repo-iss</id>
  71.                     <url>http://10.24.16.99:5555/nexus/content/groups/public/</url>
  72.                     <releases>
  73.                         <enabled>true</enabled>
  74.                     </releases>
  75.                     <snapshots>
  76.                         <enabled>true</enabled>
  77.                     </snapshots>
  78.                 </repository>
  79.             </repositories>
  80.             <pluginRepositories>
  81.                 <pluginRepository>
  82.                     <id>repo-iss</id>
  83.                     <url>http://10.24.16.99:5555/nexus/content/groups/public/</url>
  84.                     <releases>
  85.                         <enabled>true</enabled>
  86.                     </releases>
  87.                     <snapshots>
  88.                         <enabled>true</enabled>
  89.                     </snapshots>
  90.                 </pluginRepository>
  91.             </pluginRepositories>
  92.         </profile>
  93.     </profiles>
  94.     <activeProfiles>
  95.         <activeProfile>profile-default</activeProfile>
  96.         <!--<activeProfile>profile-iss</activeProfile>-->
  97.     </activeProfiles>
  98. <!--
  99.     <proxies>
  100.         <proxy>
  101.             <active>true</active>
  102.             <protocol>http</protocol>
  103.             <host>10.10.204.160</host>
  104.             <port>80</port>
  105.         </proxy>
  106.     </proxies>
  107. -->
  108. </settings>
© 著作权归作者所有

Maven配置 settings.xml 转的更多相关文章

  1. maven配置settings.xml【阿里云】

    <?xml version="1.0" encoding="utf-8"?> <settings xmlns="http://mav ...

  2. Maven的settings.xml配置详解

    子节点详细介绍转载:http://www.cnblogs.com/jingmoxukong/p/6050172.html?utm_source=gold_browser_extension 全局配置 ...

  3. Maven中settings.xml文件各标签含义

    原文地址:http://www.cnblogs.com/jingmoxukong/p/6050172.html?utm_source=gold_browser_extension settings.x ...

  4. Maven的settings.xml文件结构之mirrors

    Maven的远程库提供大量构件,供Maven项目直接下载使用.对于一个Maven项目,如果没有特别声明,默认使用Maven的central库,url如下: http://repo.maven.apac ...

  5. 详解Maven用户的配置settings.xml

    Maven用户设置 作者其他技术文章 1)Oracle性能优化之查询语句通用原则 2)Redis常用命令 3) SpringCloud入门之常用的配置文件 application.yml和 boots ...

  6. Maven 的 settings.xml 配置中的mirror节点

    maven2的setting.xml大家都知道,里面有个mirrors节点,用来配置镜像URL. mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性 ...

  7. Maven项目settings.xml的配置

    原文地址 http://www.cnblogs.com/DreamDrive/p/5571916.html 在Maven中提供了一个settings.xml文件来定义Maven的全局环境信息.这个文件 ...

  8. [No000016B]清华maven库配置settings.xml

    路径:"C:\Users\%USERNAME%\.m2\settings.xml" <settings xmlns="http://maven.apache.org ...

  9. maven的settings.xml详细说明

    转自:http://writeblog.csdn.net/ <?xml version="1.0" encoding="UTF-8"?> <s ...

随机推荐

  1. js实现幻灯片播放图片示例代码

    幻灯片播放图片的效果想必大家都有见到过吧,下面有个不错的示例,感兴趣的朋友可以参考下 复制代码代码如下: <select id="img_date" style=" ...

  2. USB Key插入和移除监控

    近期在做USB Key插入和移除监控,已经做到了插入和移除USB Key时,程序能够及时感应到. 如下为源代码: private void Form1_Load(object sender, Even ...

  3. iOS 改变UILabel部分颜色

    //协议 UILabel *xieLabel = [[UILabel alloc] init]; xieLabel.textColor = TextGrayColor; xieLabel.font = ...

  4. C# RichTextBox 获取当前显示部分的文字

    int start = richTextBox1.GetCharIndexFromPosition(new Point(0, 0)); int end = richTextBox1.GetCharIn ...

  5. bzoj 2852: 强大的区间 辗转相除

    2852: 强大的区间 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 45  Solved: 12[Submit][Status][Discuss] D ...

  6. 基于Visual C++6.0的DLL编程实现

    整理自基于Visual C++6.0的DLL编程实现 本文通过通俗易懂的方式,全面介绍了动态链接库的概念.动态链接库的创建和动态链接库的链接,并给出个简单明了的例子,相信读者看了本文后,能够创建自己的 ...

  7. ECMall注册机制简要分析

    ecmall的注册流程index.php?app=member&act=register. 首先app是member,act是register方法. index.php中.通过ecmall的s ...

  8. POJ 2886 Who Gets the Most Candies?(反素数+线段树)

    点我看题目 题意 :n个小盆友从1到n编号按顺时针编号,然后从第k个开始出圈,他出去之后如果他手里的牌是x,如果x是正数,那下一个出圈的左手第x个,如果x是负数,那出圈的是右手第-x个,游戏中第p个离 ...

  9. in an effort to

    What does "in an effort" to mean? I personally consider in an effort to a stock phrase1. T ...

  10. USACO3.34Home on the Range(DP)

    之前做过一道类似的 国际象棋盘神马的.. 统计出以每个1作为右下角的最大正方形 那么以大于二到这个最大值之间为边的正方形都可以以这个为右下角 累加就可以了 dp[i][j] = min(dp[i-1] ...