https://blog.csdn.net/tomato__/article/details/13025187

快速预览

maven的配置文件为settings.xml,在下面路径中可以找到这个文件,分别为:
    ------ $M2_HOME/conf/settings.xml:全局设置,在maven的安装目录下;
    ------ ${user.home}/.m2/settings.xml:用户设置,需要用户手动添加,可以将安装目录下的settings.xml文件拷贝过来修改。
    两个文件的关系为:如果两个文件同时存在,文件内容将被融合,相同设置将以用户设置的settings.xml为准。
    该文件一共有10个配置项,文件结构为:
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                        http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <localRepository/>
        <interactiveMode/>
        <usePluginRegistry/>
        <offline/>
        <pluginGroups/>
        <servers/>
        <mirrors/>
        <proxies/>
        <profiles/>
        <activeProfiles/>
    </settings>
 下面对每一个配置项做一个简要的讲解,帮助理解每一项的含义和配置方式,以便后面做更深入的学习:

简单属性

  1. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
  4. http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <localRepository>${user.home}/.m2/repository</localRepository>
  6. <interactiveMode>true</interactiveMode>
  7. <usePluginRegistry>false</usePluginRegistry>
  8. <offline>false</offline>
  9. ...
  10. </settings>

localRepository:本地仓库路径,默认值 ${user.home}/.m2/repository;
  interactiveMode:值为true/false,true表示mave可以使用用户输入,默认true;
  usePluginRegistry:值为true/false,true表示maven使用${user.home}/.m2/plugin-registry.xml管理插件版本,默认为false;
  offline:值为true/false,true表示构建系统在离线模式下执行,默认为false;

pluginGroups

每个pluginGroup元素都包含一个groupId,当你在命令行中没有提供插件的groupid时,将会使用该列表。这个列表自动包含org.apache.maven.plugins和org.codehaus.mojo。

  1. <pluginGroups>
  2. <pluginGroup>org.mortbay.jetty</pluginGroup>
  3. </pluginGroups>

例如:在做了上面的配置后,直接执行如下简写形式的命令即可
  mvn jetty:run

servers

POM中的repositories和distributionManagement元素为下载和部署定义的仓库。一些设置如服务器的用户名和密码不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。

  1. <servers>
  2. <server>
  3. <id>server001</id>
  4. <username>my_login</username>
  5. <password>my_password</password>
  6. <privateKey>${user.home}/.ssh/id_dsa</privateKey>
  7. <passphrase>some_passphrase</passphrase>
  8. <filePermissions>664</filePermissions>
  9. <directoryPermissions>775</directoryPermissions>
  10. <configuration></configuration>
  11. </server>
  12. </servers>

id:服务器的id,和repository/mirror中配置的id项匹配;
  username,password:服务器的认证信息;
  privateKey,passphrase:指定一个路径到一个私有key(默认为${user.home}/.ssh/id_dsa)和一个passphrase;
  filePermissions,directoryPermissions:设置文件和文件夹访问权限,对应unix文件权限值,如:664,后者775.
  
  注意:如果你使用一个已有key登录服务器,你必须忽略<password>项,否则,key将会被忽略。

Mirrors

  1. <mirrors>
  2. <mirror>
  3. <id>planetmirror.com</id>
  4. <name>PlanetMirror Australia</name>
  5. <url>http://downloads.planetmirror.com/pub/maven2</url>
  6. <mirrorOf>central</mirrorOf>
  7. </mirror>
  8. </mirrors>

id,name:镜像的唯一标识和用户友好的名称;
  url:镜像的url,用于代替原始仓库的url;
  mirrorof:使用镜像的仓库的id,可以使用下面匹配属性:
           ------*:匹配所有仓库id;
           ------external:*:匹配所有仓库id,除了那些使用localhost或者基于仓库的文件的仓库;
           ------多个仓库id之间用逗号分隔;
           ------!repol:表示匹配所有仓库,除了repol。
           注意:如果配置了多个仓库,首先匹配id精确匹配的镜像,否则maven使用第一个匹配的镜像。

proxies

代理服务器设置。
  1. <proxy>
  2. <id>optional</id>
  3. <active>true</active>
  4. <protocol>http</protocol>
  5. <username>proxyuser</username>
  6. <password>proxypass</password>
  7. <host>proxy.host.net</host>
  8. <port>80</port>
  9. <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
  10. </proxy>
  id:可选,为代理服务器设置一个名称;
  active:true/false,默认true;
  protocol:代理服务器使用的协议类型;
  username:用户名;
  password:密码;
  host:主机名,或者ip;
  port:端口号;
  nonProxyHosts:不使用代理服务器的主机类型,多个主机之间用'|'分隔,可使用通配符,如:*.somewhere.com。

profiles

  这里的profile元素是pom.xml的profile元素的一个裁剪版本,它包含activation、repositories、pluginRepositories和properties元素。
  如果一个在settins中的profile是激活的,它的值将覆盖在一个POM或者profiles.xml文件中的任何相同id的profiles。

Activation

通过Activation来指定profile生效的环境,具体见下:

  1. <profiles>
  2. <profile>
  3. <id>test</id>
  4. <activation>
  5. <activeByDefault>false</activeByDefault>
  6. <jdk>1.5</jdk>
  7. <os>
  8. <name>Windows XP</name>
  9. <family>Windows</family>
  10. <arch>x86</arch>
  11. <version>5.1.2600</version>
  12. </os>
  13. <property>
  14. <name>mavenVersion</name>
  15. <value>2.0.3</value>
  16. </property>
  17. <file>
  18. <exists>${basedir}/file2.properties</exists>
  19. <missing>${basedir}/file1.properties</missing>
  20. </file>
  21. </activation>
  22. ...
  23. </profile>
  24. </profiles>

activeByDefault:是否自动激活;
   jdk:jdk版本,必须达到该版本后才能执行激活;
   os:操作系统环境信息;
   property:当maven探测到一个name=value值对时,profile才被激活;
   file:文件exists或者missing可以激活该profile。

Properties

properties中的值可以在一个POM中通过${x}来使用,x比哦是一个property,以下形式在settiongs.xml文件中都可以使用:
   --env.X;表示使用一个环境变量,如:${env.PATH}表示使用PATH环境变量;
   --project.x:标识在POM中的对应元素的值,如:<project><version>1.0</version></project>可以通过${project.version}引用;
   --settings.x:在settins.xml中包含的对应元素的值,如:<settings><offline>false</offline></settings>可以通过${settings.offline}引用;
   --Java System Properties:所有java.lang.System.getProperties()获取的属性都是可用的,如:${java.home};
   --x:在<properties/> 中或者一个扩展文件中设置的属性,如:${someVar};
   配置方式为:

  1. <profiles>
  2. <profile>
  3. ...
  4. <properties>
  5. <user.install>${user.home}/our-project</user.install>
  6. </properties>
  7. ...
  8. </profile>
  9. </profiles>

属性${user.install}就可以在POM中使用了。

Repositories

仓库。仓库是Maven用来填充构建系统本地仓库所使用的一组远程项目。而Maven是从本地仓库中使用其插件和依赖。不同的远程仓库可能含有不同的项目,而在某个激活的profile下,可能定义了一些仓库来搜索需要的发布版或快照版构件。

  1. <repositories>
  2. <repository>
  3. <id>codehausSnapshots</id>
  4. <name>Codehaus Snapshots</name>
  5. <releases>
  6. <enabled>false</enabled>
  7. <updatePolicy>always</updatePolicy>
  8. <checksumPolicy>warn</checksumPolicy>
  9. </releases>
  10. <snapshots>
  11. <enabled>true</enabled>
  12. <updatePolicy>never</updatePolicy>
  13. <checksumPolicy>fail</checksumPolicy>
  14. </snapshots>
  15. <url>http://snapshots.maven.codehaus.org/maven2</url>
  16. <layout>default</layout>
  17. </repository>
  18. </repositories>

releases、snapshots:不同的版本策略,对应发布版本和快照版本;
   enabled:true/false,对应类型是否激活;
   updatePolicy:更新策略,maven将比较本地POM的时间戳(存储在仓库的maven-metadata文件中)和远端的,配置选项可以设置:always、daily(一天一次,默认),interval:x(x为一整数,单位分钟),never;
   checksumPolicy:maven部署文件到仓库时,也会部署对应的校验和文件,你可以设置:ignore,fail或者warn用于当校验和文件不存在或者检验失败时的处理策略;
   layout:上面提到的仓库大部分都遵循共同的布局,可以配置:default(默认)或者legacy(遗留);

pluginRepositories

插件仓库。仓库是两种主要构件的家。第一种构件被用作其它构件的依赖。这是中央仓库中存储大部分构件类型。另外一种构件类型是插件。Maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。pluginRepositories元素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地址。

activeProfiles

  1. <activeProfiles>
  2. <activeProfile>env-test</activeProfile>
  3. </activeProfiles>

activeProfile中间定义activeProfile的id,在这里定义的activeProfile总是被激活,不关心环境设置,如果配置的id的profile没有发现,将没有任何事发生。

maven设置------settings.xml文件学习的更多相关文章

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

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

  2. maven的settings.xml文件

    settings.xml是maven的配置文件.一般我们在网上下载的maven包解压以后,conf文件里面的有个setting.xml文件,通常这个settings.xml文件中会有你的本地仓库会在哪 ...

  3. jenkins maven设置settings.xml

    环境:jenkins.2.89.3 1.安装settings.xml管理插件Config File Provider Plugin  系统管理->管理插件->搜索Config File P ...

  4. [转] 分享一个快的飞起的maven的settings.xml文件

    <?xml version="1.0"?> <settings> <localRepository>/home/yizhen/.m2/repos ...

  5. 分享一个快的飞起的maven的settings.xml文件

    <?xml version="1.0"?> <settings> <localRepository>/home/yizhen/.m2/repos ...

  6. 较快的maven的settings.xml文件

    <?xml version="1.0" encoding="UTF-8"?> <settings> <!-- <localR ...

  7. 解析Maven的settings.xml文件

    一.镜像问题 1.为什么需要配置maven国内镜像? 在不配置镜像的情况下,maven默认会使用中央库.--https://repo.maven.apache.org/maven2 maven中央库在 ...

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

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

  9. 【maven学习】settings.xml文件详解

    环境 apache-maven-3.6.1 jdk 1.8 eclipse 4.7 Settings.xml是设置maven参数的配置文件,包含类似本地仓储位置.修改远程仓储服务器.认证信息等配置.p ...

随机推荐

  1. O2耳放 DIY 模拟放大

    http://nwavguy.blogspot.com/2011/07/o2-headphone-amp.html 原文链接 O2耳放. O2是一个DIY项目.免费,开源.本篇博客也免费,开源. O2 ...

  2. Codeforces Round #499 (Div. 2)(1011)

    Natasha is planning an expedition to Mars for nn people. One of the important tasks is to provide fo ...

  3. Educational Codeforces Round 45 (Rated for Div. 2)

    A bracket sequence is a string containing only characters "(" and ")". A regular ...

  4. kibana-4.6.3-linux-x86_64.tar.gz的下载(图文详解)

    对于Kibana ,我们知道,是Elasticsearch/Logstash/Kibana的必不可少成员. 第一步:进入Elasticsearch的官网 https://www.elastic.co/ ...

  5. JAVA基础知识总结15(集合容器)

    集合框架:用于存储数据的容器. 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合和数组的区别: 1: ...

  6. mongo 修改器 $inc/$set/$unset/$pop/$push/$pull/$addToSet

    mongo $inc 可以对集合里面的某些值是数字的增减.看代码 $set  可以进行修改,并且不存在的时候默认添加. 同时还能该变数据的类型. 还可以该变内嵌元素的值 用.调用 $unset  删除 ...

  7. 张超超OC基础回顾04_实例变量修饰(@public),点语法,self关键字,多态,继承

    零.实例变量修饰符 /* @public 就是实例变量修饰符 @public >可以在其它类中访问被public修饰的成员变量 >也可以在本类中访问被public修饰的成员变量 >可 ...

  8. SaeMysql操作示例

    新浪sae的官方说明文档:http://apidoc.sinaapp.com/sae/SaeMysql.html Class SaeMysql 具体实现:http://apidoc.sinaapp.c ...

  9. 面试题: java多线程 背1

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  10. 19. AUTO INCREMENT 字段

    Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto- ...