setting.xml配置文件
http://blog.csdn.net/u012152619/article/details/51485152
https://www.cnblogs.com/yanghongfei/p/6995613.html
maven的配置文件settings.xml存在于两个地方:
1.安装的地方:${M2_HOME}/conf/settings.xml
2.用户的目录:${user.home}/.m2/settings.xml
前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml。
Maven安装后,用户目录下不会自动生成settings.xml,只有全局配置文件。如果需要创建用户范围的settings.xml,可以将安装路径下的settings复制到目录${user.home}/.m2/。Maven默认的settings.xml是一个包含了注释和例子的模板,可以快速的修改它来达到你的要求。
全局配置一旦更改,所有的用户都会受到影响,而且如果maven进行升级,所有的配置都会被清除,所以要提前复制和备份${M2_HOME}/conf/settings.xml文件,一般情况下不推荐配置全局的settings.xml。
- xml version="1.0" encoding="UTF-8"?>
- <settings xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
- <localRepository>usr/local/mavenlocalRepository>
- <interactiveMode>trueinteractiveMode>
- <usePluginRegistry>falseusePluginRegistry>
- <offline>falseoffline>
- <pluginGroups>
- <pluginGroup>org.codehaus.mojopluginGroup>
- pluginGroups>
- <proxies>
- <proxy>
- <id>myproxyid>
- <active>trueactive>
- <protocol>http://…protocol>
- <host>proxy.somewhere.comhost>
- <port>8080port>
- <username>proxyuserusername>
- <password>somepasswordpassword>
- <nonProxyHosts>*.google.com|ibiblio.orgnonProxyHosts>
- proxy>
- proxies>
- <servers>
- <server>
- <id>server001id>
- <username>my_loginusername>
- <password>my_passwordpassword>
- <privateKey>${usr.home}/.ssh/id_dsaprivateKey>
- <passphrase>some_passphrasepassphrase>
- <filePermissions>664filePermissions>
- <directoryPermissions>775directoryPermissions>
- <configuration>configuration>
- server>
- servers>
- <mirrors>
- <mirror>
- <id>planetmirror.comid>
- <name>PlanetMirror Australianame>
- <url>http://downloads.planetmirror.com/pub/maven2url>
- <mirrorOf>centralmirrorOf>
- mirror>
- mirrors>
- <profiles>
- <profile>
- <id>testid>
- <activation>
- <activeByDefault>falseactiveByDefault>
- <jdk>1.7jdk>
- <os>
- <name>Windows XPname>
- <family>Windowsfamily>
- <arch>x86arch>
- <version>5.1.2600version>
- os>
- <property>
- <name>mavenVersionname>
- <value>2.0.3value>
- property>
- <file>
- <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/exists>
- <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/missing>
- file>
- activation>
- <properties>
- <user.install>usr/local/winner/jobs/maven-guideuser.install>
- properties>
- <repositories>
- <repository>
- <id>codehausSnapshotsid>
- <name>Codehaus Snapshotsname>
- <releases>
- <enabled>falseenabled>
- <updatePolicy>alwaysupdatePolicy>
- <checksumPolicy>warnchecksumPolicy>
- releases>
- <snapshots>
- <enabled />
- <updatePolicy />
- <checksumPolicy />
- snapshots>
- <url>http://snapshots.maven.codehaus.org/maven2url>
- <layout>defaultlayout>
- repository>
- repositories>
- <pluginRepositories>
- <pluginRepository>
- <releases>
- <enabled />
- <updatePolicy />
- <checksumPolicy />
- releases>
- <snapshots>
- <enabled />
- <updatePolicy />
- <checksumPolicy />
- snapshots>
- <id />
- <name />
- <url />
- <layout />
- pluginRepository>
- pluginRepositories>
- <activeProfiles>
- <activeProfile>env-testactiveProfile>
- activeProfiles>
- profile>
- profiles>
- settings>
上面的配置文件对各个节点的含义及作用都有注解。实际应用中,经常使用的是
节点
在仓库的配置一节中,已经对setting.xml中的常用节点做了详细的说明。在这里需要特别介绍一下的是
profile可以让maven能够自动适应外部的环境变化,比如同一个项目,在Linux下编译linux的版本,在win下编译win的版本等。一个项目可以设置多个profile,也可以在同一时间设置多个profile被激活(active)的。自动激活的 profile的条件可以是各种各样的设定条件,组合放置在activation节点中,也可以通过命令行直接指定。如果认为profile设置比较复杂,可以将所有的profiles内容移动到专门的 profiles.xml 文件中,不过记得和pom.xml放在一起。
activation节点是设置该profile在什么条件下会被激活,常见的条件有如下几个:
1. os
判断操作系统相关的参数,它包含如下可以自由组合的子节点元素
message - 规则失败之后显示的消息
arch - 匹配cpu结构,常见为x86
family - 匹配操作系统家族,常见的取值为:dos,mac,netware,os/2,unix,windows,win9x,os/400等
name - 匹配操作系统的名字
version - 匹配的操作系统版本号
display - 检测到操作系统之后显示的信息
2. jdk
检查jdk版本,可以用区间表示。
3. property
检查属性值,本节点可以包含name和value两个子节点。
4. file
检查文件相关内容,包含两个子节点:exists和missing,用于分别检查文件存在和不存在两种情况。
如果settings中的profile被激活,那么它的值将覆盖POM或者profiles.xml中的任何相等ID的profiles。
如果想要某个profile默认处于激活状态,可以在