Maven2的配置文件settings.xml

简介:

概览

当Maven运维进程中的种种配置,例如pom.xml,不想绑定到一个一定的project只怕要分配给用户时,大家运用settings.xml中的settings成分来规定这一个安插。这包含了本地仓库地点,远程仓库服务器以及表明音信等。

settings.xml存在于多个位置:

1.安装的地点:$M2_HOME/conf/settings.xml

2.用户的目录:${user.home}/.m2/settings.xml

前端又被叫做全局配置,后者被叫做用户配置。假使两岸都留存,它们的始末将被联合,并且用户范围的settings.xml优先。

设若您偶尔要求创立用户范围的settings,你能够省略的copy
Maven安装路径下的settings到目录${user.home}/.m2。Maven暗中同意的settings.xml是贰个包括了诠释和例子的沙盘,你能够急忙的修改它来达到你的渴求。

下边是settings下的顶层成分的贰个一览:

图片 1

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     <localRepository/>
 6     <interactiveMode/>
 7     <usePluginRegistry/>
 8     <offline/>
 9     <pluginGroups/>
10     <servers/>
11     <mirrors/>
12     <proxies/>
13     <profiles/>
14     <activeProfiles/>
15 </settings>

图片 2

settings的剧情能够在上边这几个地方篡改:

1.${user.home}和有着别的的系列质量

2.${env.HOME}等环境变量

瞩目:settins.xml中profiles下定义的属性不可能被篡改。

计划细节:

简易的值

50%之上的拔尖settings元素师简单的值,代表了第3手处于活跃的营造系统的因素的取值范围。

 

图片 3

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     <localRepository>${user.home}/.m2/repository</localRepository>
 6     <interactiveMode>true</interactiveMode>
 7     <usePluginRegistry>false</usePluginRegistry>
 8     <offline>false</offline>
 9     ...
10 </settings>

图片 4

localRepository:那一个值是创设系统的当地仓库的路线。私下认可的值是${user.home}/.m2/repository.如果1个系统想让抱有登陆的用户都用同二个本地仓库的话,那么些值是最为有用的。

interactiveMode:借使Maven要试图与用户交互来取得输入就安装为true,不然就设置为false,暗许为true。

usePluginRegistry:要是Maven使用${user.home}/.m2/plugin-registry.xml来保管plugin的版本,就设置为true,私下认可为false。

offline:如若塑造系统要在离线格局下工作,设置为true,暗中认可为false。借使营造服务器因为网络故障也许安全难点不可能与远程仓库相连,那么这一个设置是这多少个实用的。

插件组

其一成分包涵了一名目繁多pluginGroup成分,各样又含有了四个groupId。当贰个plugin被选取,而它的groupId没有被提供的时候,这一个列表将被寻找。这么些列表自动的蕴藏了org.apache.maven.plugins和org.codehaus.mojo。

 

图片 5

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     ...
 6     <pluginGroups>
 7         <pluginGroup>org.mortbay.jetty</pluginGroup>
 8     </pluginGroups>
 9     ...
10 </settings>

图片 6

例如,有了上边包车型地铁布局,Maven命令行能够应用简易的下令执行org.morbay.jetty:jetty-maven-plugin:run,如下

mvn
jetty run

服务器

用来下载和布局的堆栈是用POM中的repositories和distributionManagement成分来定义的。不过有些配置例如username和password就不应当乘机pom.xml来分配了。那体系型的音讯应该保留在营造服务器中的settings.xml中。

 

图片 7

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     ...
 6     <servers>
 7     <server>
 8     <id>server001</id>
 9     <username>my_login</username>
10     <password>my_password</password>
11     <privateKey>${user.home}/.ssh/id_dsa</privateKey>
12     <passphrase>some_passphrase</passphrase>
13     <filePermissions>664</filePermissions>
14     <directoryPermissions>775</directoryPermissions>
15     <configuration></configuration>
16     </server>
17     </servers>
18     ...
19 </settings>

图片 8

id:那是Server的ID(不是登录进来的user),与Maven想要连接上的repository/mirror中的id成分相匹配。

username,password:那多少个因素成对出现,表示连接那么些server需求验证username和password。

privateKey,passphrase:与前几个成分一样,那五个成对现身,分别指向了2个私钥(暗中认可的是${user.home}/.ssh/id_dsa)和四个passphrase。passphrase和password成分恐怕在今日被客观化,可是以往必须以文件方式在settings.xml中装置。

filePermissions,directoryPermissions:当3个仓库文件也许目录在配置阶段被创设的时候,就务须用到权力许可。他们合法的值是七个数字,就像*nix中的文件权限,例如:664,775.

瞩目:倘诺您选取了1个私钥来报到server,那么password成分必须被简单,不然私钥将被忽视。

密码加密

1个新特色:服务器password和passphrase加密已经被升到2.1.0+

镜像

 

图片 9

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     ...
 6     <mirrors>
 7         <mirror>
 8             <id>planetmirror.com</id>
 9             <name>PlanetMirror Australia</name>
10             <url>http://downloads.planetmirror.com/pub/maven2</url>
11             <mirrorOf>central</mirrorOf>
12         </mirror>
13     </mirrors>
14     ...
15 </settings>

图片 10

id,name:唯一的镜像标识和用户自个儿的镜像名称。id被用来不一致mirror元素,并且当连接时候被用来收获对应的证件。

url:镜像基本的U景逸SUVL,营造系统敬将使用这一个U奥迪Q5L来一而再仓库,而不是原本的库房U昂CoraL。

mirrorOf:镜像所含有的堆栈的Id。例如,指向Maven
central仓库的镜像(http://repo1.maven.org/maven2/),设置这个元素为central。更多的高级映射例如repo1,repo2
或者*,!inhouse都以足以的。没要求肯定和mirror的id相匹配。

代理

 

图片 11

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     ...
 6     <proxies>
 7         <proxy>
 8             <id>myproxy</id>
 9             <active>true</active>
10             <protocol>http</protocol>
11             <host>proxy.somewhere.com</host>
12             <port>8080</port>
13             <username>proxyuser</username>
14             <password>somepassword</password>
15             <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
16         </proxy>
17     </proxies>
18     ...
19 </settings>

图片 12

id:proxy的唯一标识,用来区分proxy成分。

active:当proxy被激活的时候为true。当注解的代理很多的时候,那几个很有用,可是同一时半刻间仅有四个被激活。

protocol,host,port:代理地址protocol://host:port的分散方式。

username,password:四个成分成对出现,提供连接proxy服务器时的辨证。

nonProxyHosts:那里列出了不须要利用代理的hosts。列表的相间符是proxy服务器想要的品类。下面例子使用了pipe分隔符,逗号分隔符也正如通用。

铺排文件

settings.xml中的profile是pom.xml中的profile的凝练方式。它含有了激活(activation),仓库(repositories),插件仓库(pluginRepositories)和质量(properties)成分。profile成分仅包括那八个要素是因为她们提到到总体的创设系统,而不是各自的POM配置。

若是settings中的profile被激活,那么它的值将重载POM也许profiles.xml中的任何相等ID的profiles。

激活(activation)

activations是profile的机要,就像是POM中的profiles,profile的能力在于它在一定情景下得以修改部分值。而那几个境况是透过activation来钦定的。

 

图片 13

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     ...
 6     <profiles>
 7         <profile>
 8             <id>test</id>
 9             <activation>
10                 <activeByDefault>false</activeByDefault>
11                 <jdk>1.5</jdk>
12                 <os>
13                     <name>Windows XP</name>
14                     <family>Windows</family>
15                     <arch>x86</arch>
16                     <version>5.1.2600</version>
17                 </os>
18                 <property>
19                     <name>mavenVersion</name>
20                     <value>2.0.3</value>
21                 </property>
22                 <file>
23                     <exists>${basedir}/file2.properties</exists>
24                     <missing>${basedir}/file1.properties</missing>
25                 </file>
26             </activation>
27             ...
28         </profile>
29     </profiles>
30     ...
31 </settings>

图片 14

一旦具有钦命的标准化都达到了,那么,activation就被触发,而且不需求三遍性全部高达。

jdk:在jdk成分中,activation有1个内建的,java版本检查和测试。借使检查和测试到jdk版本与梦想的同样,那么就激活。在地点的例证中,1.5.0_06是满意的。

os:os成分能够定义一些上边所示的操作系统特定的性质。

property:借使Maven检查和测试到对应的名值对的质量,那么,这么些profile将被激活。

file:假如给定的公文存在,可能不存在那么将激活那几个profile。

activation并不是绝无仅有激活profile的途径。settings.xml中的activeProfile包罗了profile的id。他们也能够经过命令行来显式的激活,例如-P
test。

要是你想查看在四个创设进度中有何profile会被激活。就利用maven-help-plugin

mvn
help:active-profiles

属性(properites)

Maven的天性是值占位符,就好像Ant中的属性。要是X是壹脾质量的话,那么它的值在POM中能够运用${X}来进行任意地点的访问。他们来自于各个差别的作风,全部都足以从settings.xml文件中做客到。

1.env.X:使用“env.”前缀将会回来当前的环境变量。例如${env.PATH}正是运用了$path环境变量。

2.project.X:贰个点“.”分割的门径,在POM中就是不无关系的成分的值。例如:<project><version>1.0</version></project>就足以经过${project.version}来拜会。

3.settings.X:一个点“.”分割的门路,在settings.xml中便是相呼应的元素的值,例如:<settings><offline>false</offline></settings>就能够透过${settings.offline}来访问。

4.Java种类性能:全体通过java.lang.System.getProperties()来访问的性质都足以像POM中的属性一样访问,例如:${java.home}

5.X:被<properties/>或许外部文件定义的习性,值能够如此访问${someVar}

 

图片 15

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     ...
 6     <profiles>
 7         <profile>
 8             ...
 9             <properties>
10                 <user.install>${user.home}/our-project</user.install>
11             </properties>
12             ...
13         </profile>
14     </profiles>
15     ...
16 </settings>

图片 16

一经那一个profile被激活,那么属性${user.install}就足以被访问了。

仓库(repositories)

库房是Maven用来修建创设系统的当地仓库的远程项目汇聚。它出自于被Maven叫做插件和依赖的地点仓库。不相同的中距离仓库包涵分化的项目,当profile被激活,他们就会需找匹配的release可能snapshot构件。

 

图片 17

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     ...
 6     <profiles>
 7         <profile>
 8         ...
 9         <repositories>
10             <repository>
11                 <id>codehausSnapshots</id>
12                 <name>Codehaus Snapshots</name>
13                 <releases>
14                     <enabled>false</enabled>
15                     <updatePolicy>always</updatePolicy>
16                     <checksumPolicy>warn</checksumPolicy>
17                 </releases>
18                 <snapshots>
19                     <enabled>true</enabled>
20                     <updatePolicy>never</updatePolicy>
21                     <checksumPolicy>fail</checksumPolicy>
22                 </snapshots>
23                 <url>http://snapshots.maven.codehaus.org/maven2</url>
24                 <layout>default</layout>
25             </repository>
26         </repositories>
27         <pluginRepositories>
28         ...
29         </pluginRepositories>
30         ...
31         </profile>
32     </profiles>
33     ...
34 </settings>

图片 18

releases,snapshots:那是种种构件的国策,release可能snapshot。因了那四个汇集,POM能够在单个的库房中不借助于于别的二个的政策而更改近来方针。例如:一个人想必只下载snapshot用来开发。

enable:true大概false,来标记仓库是还是不是为各自的档次激活(release
恐怕 snapshot)。

updatePolicy:这么些成分指明了翻新的成效。Maven会相比本地POM与远程的光阴戳。可选的品种为:always,daily,interval:X,nerver。

checksumPolicy:当Maven向仓库安插文件的时候,它也配备了对应的校验和文件。可选的为:ignore,fail,warn,大概不正确的校验和。

layout:在上头描述仓库的时候,我们关系他们有统一的布局。那完全正确。使用这几个来表明它是default依旧legacy。

插件仓库(plugin
repositories)

仓库包括了三种关键项目标构件。第②种是用来做其余部件重视的预制构件,那是在主旨仓库中的大部分插件。别的一种档次的部件正是插件。Maven的插件本人便是一种特有的预制构件。由此,插件仓库被从其余仓库中分离出来。无论怎么说,pluginRepositories成分模块的构造与repositories模块很相像。pluginRepository成分指向1个足以找到新插件的中远距离地址。

激活配置(Active
Profiles)

 

图片 19

1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
2           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
4             http://maven.apache.org/xsd/settings-1.0.0.xsd">
5     ...
6     <activeProfiles>
7         <activeProfile>env-test</activeProfile>
8     </activeProfiles>
9 </settings>

图片 20

settings.xml最后3个谜题是activeProfiles成分。它涵盖一文山会海的activeProfile成分,各种都有三个profile
id的值,任何profile
id被定义到activeProfile的profile将被激活,不管其余的条件设置什么样。即使没有匹配的profile被找到,那么就什么工作也不做。例如:如若env-test是二个activeProfile,2个在pom.xml或许profile.xml中的具有相应id的profile将被激活。假使没有那样的profile被找到,就怎么事也不做,一切照常。

初稿地址:http://maven.apache.org/settings.html

相关文章