陈科肇
==========
0.简介
settings.xml文件的settings元素包含很多子元素,这些用来配置Maven的执行情况。
可以在两个地方找到settings.xml文件:Maven安装目录下的$MAVEN_HOME/conf/settings.xml、用户特定在~/.m2/settings.xml。
1.简单值
一半顶层settings元素是简单值,它们表示的一系列值可以配置Maven的核心行为:
localRepository – 表示构建系统本地仓库的位置;
interactiveMode -如果Maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true;
2.服务器(Servers)
POM中的distributionManagement元素定义了部署的仓库。然而,一些设置如安全证书不应该和pom.xml一起分发。这
种类型的信息应该存在于构建服务器上的settings.xml文件中。 <servers>
<server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> </server><server> <id>siteServer</id> <privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave empty if not used.</passphrase> </server>
<servers>
说明:
id:这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。username, password:这对元素表示服务器认证所需要的登录名和密码。
待续…
3.镜像(Mirrors)
<mirrors> <mirror> <id>Nexus</id> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>:8081/nexus/content/groups/public</url> </mirror> </mirrors>
说明:
id,name:该镜像的唯一定义符。id用来区分不同的mirror元素。
url:该镜像的url。构建系统会优先使用该url,而非使用默认的服务器url。
mirrorOf:被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库( )
的镜像,就需要将该元素设置成central。这必须和中央仓库的id central完全一致。
注:这里配置mirrorOf的值为*,代表maven的所有访问请求都会指向到Nexus仓库组。
4.代理(Proxies)
描述:
1).使用代理:用户下载构件(Maven本地仓库)->代理仓库(在代理仓库中找不到构件,到转到中央仓库)–>中央仓库;
2).不使用代理:用户下载构件(Maven本地仓库)->中央仓库;
Nexus有默认的中央代理仓库,如果你需要添加其它的代理仓库的话,你需要在
settings.xml配置:
<settings>…<proxies> <proxy> <id>myproxy</id> <active>true</active> <protocol>http</protocol> <host>proxy.somewhere.com</host> <port>8080</port> <username>proxyuser</username> <password>somepassword</password> <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts> </proxy> </proxies> … </settings>
id该代理的唯一定义符,用来区分不同的proxy元素。activetrue则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。protocol, host, port该代理的protocol://host:port,(协议://主机名:端口),分隔成离散的元素以方便配置。username, password这一对元素表示代理服务器认证的登录名和密码。nonProxyHosts这里定义一个不该被代理的主机名列表。该列表的分隔符由代理服务器指定;上述的例子中使用了竖线分隔符,使用逗号分隔也很常见。
5.Profiles
settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。它包含了activation,repositories,
pluginRepositories和properties元素。这里的profile元素只包含这四个子元素是因为这里只关心构建系统这个
整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。如果一个settings中的profile被激
活,它的值会覆盖任何其它定义在POM中或者profile.xml中的带有相同id的profile。
6.激活(Activation)
位于profile内部,且能够设置当满足某个条件时,激活profile。
file:文件存在时启动;
jdk:符合jdk版本时启动,如<jdk>1.5</jdk>;
os:符合系统版本时,其中还包含有子元素;
property:如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,,Profile就会被激活。
========
当然,你还可以通过其它方式来激活启动profile:
如settings.xml的子元素-
去追寻那飞翔的翅膀。落叶随风淡定了它漂泊的方向。