settings.xml 文件中包含settings标签,这个标签可以配置如何去执行Maven。其中包括本地存储库位置,备用远程存储库服务器和身份验证信息等值。

有如下两个位置可能存放这settings.xml 文件:

  • Maven 安装目录:${maven.home}/conf/settings.xml
  • 用户的目录:${user.home}/.m2/settings.xml

前者的settings.xml 是一个全局的设置文件,后者的settings.xml  是一个用户设置文件,如果两者都存在的话,则将内容进行合并处理,并且用户的settings.xml 占主导地位。

如果你想创建一个用户的设置文件,那么最好的办法就是复制全局的设置文件到${user.home}/.m2/目录下,全局的maven设置文件是一个包含了注释的示例模板。因此可以通过它调整你需要的内容。

下面是设置文件的主要标签:

 <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/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>

可以使用$ {user.home}和一些其他的系统属性值插入settings.xml属性中;${env.HOME}等环境变量。

简单设置

settings.xml设置一些简单是值,如下示例:

 <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/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>${user.home}/.m2/repository</localRepository>
<interactiveMode>true</interactiveMode>
<usePluginRegistry>false</usePluginRegistry>
<offline>false</offline>
...
</settings>
  • localRepository: 这个属性用来配置构建系统的本地存储库,默认值为:${user.home}/.m2/repository。
  • interactiveMode: Maven需要用户输入时,是否需要提示你。默认为true。
  • usePluginRegistry:如果你需要使用${user.home}/.m2/plugin-registry.xml文件来管理插件的版本,那么就设置为true。默认为false。
  • offline: 如果构建系统需要使用离线模式运行,则设置为true,默认为false。由于网络和安全问题,对于那些无法连接到远程存储库是很有用的。

pluginGroups

pluginGroups 标签包含pluginGroup标签列表,每一个pluginGroups标签包含一个groupId,当你使用插件并且在命令行中并没有提供groupId时,将搜索此列表。该列表自动包含org.apache.maven.plugins和org.codehaus.mojo的groupId。

 <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/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
...
</settings>

例如给出如上示例时,当Maven执行org.mortbay.jetty:jetty-maven-plugin:run命令时,可以直接使用如下命令执行:

mvn jetty:run

servers

下载和部署的存储库由POM的repositories 和 distributionManagement 元素定义。但某些值(如用户名或密码)不应该由POM设置,这种类型的信息应该存放在settings文件中。

 <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/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<servers>
<server>
<id>server001</id>
<username>my_login</username>
<password>my_password</password>
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
...
</settings>
  • id: 这是与Maven试图连接的存储库/镜像的id元素相匹配的服务器的标识(不是用户登录的标识)。
  • username,password:这些元素显示为一对,表示对此服务器进行身份验证所需的登录名和密码。
  • privateKey,passphrase:与前面的两个元素一样,如果需要,该对将指定私钥的路径(默认为${user.home}/.ssh/id_dsa)和密码。该passphrase和password的元素可能在将来被外部化,但现在他们必须设置在纯文本的settings.xml文件。
  • filePermissions,directoryPermissions:在部署时创建存储库文件或目录时,这些是要使用的权限。每一个的合法值都是与*nix文件权限对应的三位数字,例如664或775。

注:如果你使用私钥登录服务器,请确保省略了password元素,否则密钥不生效。

在Maven 2.1.0+ 添加了一项新功能,对password 和 passphrase进行加密。具体加密信息可以查看官方介绍

mirrors

<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/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<mirrors>
<mirror>
<id>planetmirror.com</id>
<name>PlanetMirror Australia</name>
<url>http://downloads.planetmirror.com/pub/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
...
</settings>
  • id,name: 此镜像的唯一标识符ID和用户名。这个ID可以区分不同的mirror元素。并在连接镜像时从<servers>部分选择相应的凭据。
  • url: 此镜像的基本网址。构建系统将使用此URL来连接到存储库,而不是原始存储库URL。
  • mirrorOf:  这是中央存储库的ID。例如,要指向Maven 中央存储库(https://repo.maven.apache.org/maven2/)的镜像,则将该元素值设置为central。还有更多的值如:repo1,repo2 或 *,!inhouse,这个值不能与镜像id一样。

proxies

 <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/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<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: 此代理的唯一标识ID,用来区分proxy元素。
  • active: 如果此代理处于活动状态,则设置为true。这对于声明一堆代理非常有用,但一次只能激活一个代理。
  • protocol,host,port: 协议,主机,端口。
  • username,password:这表示一对,用来验证此代理服务器所需要的用户名和密码。
  • nonProxyHosts: 这是不需要代理的主机列表。使用|进行分割,也可以使用逗号分隔。

Profiles

settings.xml 中的profile元素可以截断 pom.xml 的profile元素。它包含activation, repositories, pluginRepositories 和 properties 元素。该profile元素仅包含这四个元素,因为它们与构建系统作为一个整体,不是单个项目的设置。

如果某个prefile在settings.xml中处于激活状态,则其值将会覆盖POM 或 profile.xml文件中相同ID的profile值。

 <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/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<profiles>
<profile>
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.5</jdk>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<property>
<name>mavenVersion</name>
<value>2.0.3</value>
</property>
<file>
<exists>${basedir}/file2.properties</exists>
<missing>${basedir}/file1.properties</missing>
</file>
</activation>
...
</profile>
</profiles>
...
</settings>
  • jdk:activation 在jdk元素中内置了一个以Java为中心的检查。如果测试在与给定前缀相匹配的jdk版本号下运行,这将激活。在上面的例子中,1.5.0_06将匹配。
  • os:os元素可以定义上面显示的某些操作系统特定的属性。
  • property: 如果Maven检测到相应的name = value对的属性(可以在POM中取消$ {name}的值),该配置文件将激活。
  • file:最终,一个给定的文件名可能通过文件的存在或缺失来激活配置文件。

Apache Maven(七):settings.xml的更多相关文章

  1. Maven的settings.xml文件结构之mirrors

    Maven的远程库提供大量构件,供Maven项目直接下载使用.对于一个Maven项目,如果没有特别声明,默认使用Maven的central库,url如下: http://repo.maven.apac ...

  2. Maven的settings.xml配置详解

    子节点详细介绍转载:http://www.cnblogs.com/jingmoxukong/p/6050172.html?utm_source=gold_browser_extension 全局配置 ...

  3. Maven full settings.xml

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...

  4. maven的settings.xml详细说明

    转自:http://writeblog.csdn.net/ <?xml version="1.0" encoding="UTF-8"?> <s ...

  5. Maven中settings.xml的配置项说明

    本文部分引用自:http://haohaoxuexi.iteye.com/blog/1827778 在Maven中提供了一个settings.xml文件来定义Maven的全局环境信息.这个文件会存在于 ...

  6. Maven配置 settings.xml 转

    https://my.oschina.net/qjx1208/blog/201085 摘要: 记录settings.xml的配置,理解mirror.repository.profile的关系 本地仓库 ...

  7. Maven中settings.xml的配置项说明精讲

    1.Maven的配置文件(Maven的安装目录/conf/settings.xml ) 和 Maven仓库下(默认的Maven仓库的是用户家目录下的.m2文件,可以另行制定)的settings.xml ...

  8. maven系列--settings.xml

    安装maven,会有一份settings.xml文件,我们可以理解这份文件就是用来管理本地maven的一系列东西的.这里我先贴出一份完整的原始xml. <?xml version="1 ...

  9. Maven的Settings.xml配置文件解释

    该配置用于单用户配置和全局配置, 单用户配置默认存放于 ${user.home}/.m2/目录中. 全局配置默认存放于Maven安装目录下面的conf目录中. 这两个默认的位置都可以修改. <? ...

  10. Maven项目settings.xml的配置

    原文地址 http://www.cnblogs.com/DreamDrive/p/5571916.html 在Maven中提供了一个settings.xml文件来定义Maven的全局环境信息.这个文件 ...

随机推荐

  1. LeAndroid招聘汇总

    招聘Android通讯开发经理 工作地点:北京-朝阳区 工作经验:3-5年 薪资范围:¥ 面议 学历要求:本科以上 职责描述1.负责设计指导开发和优化Android网络通讯相关功能:2.负责设计指导开 ...

  2. selendroid之toast处理

    最近发现原来处理toast的操作失效了.仔细看了下原来的API.决定用switchTo来解决.driver.switchTo().defaultContent().findElement(By.id( ...

  3. 多线程 更新 winform 控件的值,以避免UI线程的卡顿

    委托 private delegate void UpdateDGV_AddRes_CallBack(Int32 i,bool Res); 函数实现 private void UpdateDGV_De ...

  4. spring-4.3.16+xfire-spring-1.2.6版本升级

    最近爆了个spring的漏洞,然后公司整体要求升级spring到最新版本,然后搞四了一大批猿人. spring-4.*的最新版本是4.3.16(稳定版) xfire-spring-1.2.6(最新版- ...

  5. 怎样在linux下编写C程序并编译执行

    一.Hello, world! 在linux下输入:(以hello.c为例)首先选中文件要保存的路径(如:cd work)vi hello.c(要编辑的文件名) 输入程序:# include<s ...

  6. 《机器学习实战》中贝叶斯分类中导入RSS源例子

    跟着书中代码往下写在这里卡住了,考虑到可能还会有其他同学也遇到了这样的问题,记下来分享. 先吐槽一下,相信大部分网友在这里卡住的主要原因是伟大的GFW,所以无论是软件FQ还是肉身FQ的小伙伴们估计是无 ...

  7. javascript字面量

    在JavaScript里面,字面量包括:字符串字面量(string literal ).数组字面量(array literal)和对象字面量(object literal),另外还有函数字面量(fun ...

  8. python:类与对象命名空间、面对对象的组合用法

    1,类里可以定义两种属性: #静态属性 #静态属性就是直接在类中定义的变量 #动态属性 #动态属性就是定义在类中的方法 class Course: language = ['Chinese']#静态属 ...

  9. html题型

    1.doctype的意义是什么 这个是有历史背景的,在很久以前,IE有一些自己的渲染模式,最典型的就是盒子模型,包括边距.这就造成了不兼容模式,所以他的意义 1)让浏览器以标准模式渲染 2)让浏览器知 ...

  10. Swift学习——格式控制符和元组流程控制(二)

    Swift中的格式控制符和元祖 (1)首先介绍一下元祖,元祖是关系型数据库中  比如学生表中的姓名,年龄,电话等 定义例如以下 var studentinfo = ("jhon", ...