首页 > 其他 > 详细

Maven settings细节

时间:2015-02-06 23:15:50      阅读:603      评论:0      收藏:0      [点我收藏+]

陈科肇

==========

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>

Maven settings细节

原文:http://blog.csdn.net/u013474104/article/details/43496687

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!