陈科肇
==========
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>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
说明:
id,name:该镜像的唯一定义符。id用来区分不同的mirror元素。
url:该镜像的url。构建系统会优先使用该url,而非使用默认的服务器url。
mirrorOf:被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库( http://repo1.maven.org/maven2)
的镜像,就需要将该元素设置成central。这必须和中央仓库的id central完全一致。
注:这里配置mirrorOf的值为*,代表maven的所有访问请求都会指向到Nexus仓库组。
4.代理(Proxies)
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的子元素-
<!-- 激活定义的 profile-->
<activeProfiles>
<activeProfile>development</activeProfile><!-profile定义的ID-->
<activeProfile>public-snapshots</activeProfile><!-profile定义的ID-->
</activeProfiles>
========
还有,你也可以用执行Maven命令的方式来显示激活启动。
7.属性(properties)
8.仓库(Repositories)
是本地仓库使用的一组远程项目,在某个激活的profile下,你可以通过依赖关系,搜索需要的发布版或快照版构件。
<repositories>
<repository>
<id>codehausSnapshots</id>
<name>Codehaus Snapshots</name>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<url>http://snapshots.maven.codehaus.org/maven2</url>
<layout>default</layout>
</repository>
</repositories>
releases, snapshots
这里配置了两种构件,发布版(Release)和快照版(Snapshot)的策略。有了这两组配置,POM就可以在每个单独的
仓库中,为每种类型类型的构件采取不同的策略。例如,可能有人会决定只为开发的目的开启对快照版本下载的支
持。
enabled
true或者false表示该仓库是否为某种类型构件(发布版或者快照版)开启。
updatePolicy
该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默
认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。
checksumPolicy
当Maven将构件部署到仓库中时,它也会部署对应的校验和文件。当没有校验和文件,或者该文件不正确时,你的选
项有ignore(忽略),fail(失败),或者warn(警告)。
layout
在上面的仓库描述中,它们都遵循一个共同的布局。大部分情况都是这样。Maven 2为其仓库提供了一个默认的布
局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。
9.插件仓库
仓库是两种主要构件的家。第一种构件被用作其它构件的依赖。这是中央仓库中存储大部分构件类型。另外一种构件
类型是插件。Maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。 pluginRepositories元
素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地
址。
10.激活的profile
<settings>
...
<!-- 激活定义的 profile-->
<activeProfiles>
<activeProfile>development</activeProfile><!-profile的ID-->
<activeProfile>public-snapshots</activeProfile><!-profile的ID-->
</activeProfiles>
...
</settings>