Maven settings细节

陈科肇

==========

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>

时间: 2024-12-20 14:17:37

Maven settings细节的相关文章

学习笔记——Maven settings.xml 配置详解

文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${user.home} 和和所有其他系统属性只能在3.0+版本上使用.请注意windows和Linux使用变量的区别. settings.xml详解 声明规范 <?xml version="1.0" encoding="UTF-8"?> <settings x

maven settings.xml linux

<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding

maven settings

<?xml version="1.0" encoding="UTF-8"?> <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/SETTING

[maven] settings 文件 国内镜像站

<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding

[Maven]Settings.xml文件详解

概要 settings.xml有什么用? 如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径. l  settings.xml文件是干什么的,为什么要配置它呢? 从settings.xml的文件名就可以看出,它是用来设置Maven参数的配置文件.并且,settings.xml是Maven的全局配置文件.而pom.xml文件是所在项目的局部配置. Settings.xml中包含类似本地仓储位置.修改远程仓储服务器.认证信息等配置. settings

maven settings 文件节点配置详解

基本结构 <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 "> <

maven settings.xml 文件

指定jdk 的版本: <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source>

Maven - settings.xml里的offline节点的作用

场景 某天我在本地修改了某个子项目的代码,并进行了打包:mvn clean install -DskipTests,接着我运行父项目却发现自己刚刚的改动并没有生效,或者说,我刚刚打包好的子项目变回了打包前的代码. 通过cmd的输出我发现在运行父项目的时候,自动下载更新了远程依赖库的子项目,因此将我本地打包修改好的子项目依赖给更新成了远程库的,这就是为什么我明明打包了本地修改好的子项目代码却没有在父项目生效的原因. 解决方法 在maven的配置文件settings.xml里有个offline节点,

Maven - settings.xml简易配置Demo

前言 这里贴一下settings.xml的一个简易配置demo,就是简单配置了:本地的仓库地址.阿里云镜像.指定使用jdk1.8进行编译. 这里使用的Maven是3.5.0版本的. 配置文件demo <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor lic