1、setting.xml文件位置
- 用户配置:${USER.HOME}/.m2/settings.xml
- 全局配置:${MAVEN_HOME}/conf/settings.xml
- 注意:
用户配置优于全局配置,默认使用的是用户配置
2、setting.xml文件作用
- 用于配置代理、远程仓库镜像、jar包部署服务器等信息
setting.xml配置项
配置项 | 说明 |
---|---|
localRepository | 本地仓库,默认为${USER.HOME}/.m2/repository |
interactiveMode | 交互模式,默认为true |
usePluginRegistry | 是否使用plugin是否使用plugin-registry.xml文件管理插件版本,默认为false |
offline | 是否使用离线模式,默认为false |
proxies/proxy* | 配置代理,通知给无法访问远程仓库的用户使用 |
servers/server* | 服务器身份认证,比如当deploy一个包到远程仓库时,需要权限认证 |
repositories/repository* | 用于配置远程仓库信息 |
mirrors/mirror* | 远程仓库镜像配置,会覆盖远程仓库 |
profiles/profile* | 用于配置不同环境的差异文件 |
activeProfiles/activeProfile* | 手动激活的默认差异文件 |
pluginGroups/pluginGroup* | 当插件的groupId没有显式提供,从此插件的group中寻找需要的插件 |
详细配置说明
- 代理(proxies/proxy*):
<proxies>
<proxy>
<!-- 代理标识 -->
<id>testProxy</id>
<!-- 是否激活,默认是true -->
<active>true</active>
<!-- 代理协议 -->
<protocol>http</protocol>
<!-- 用户名 -->
<username>wang</username>
<!-- 密码 -->
<password>123</password>
<!-- 端口 -->
<port>8099</port>
<!-- 主机 -->
<host>proxy.xxx.com</host>
<!-- 不需要代理的主机 -->
<nonProxyHosts>*.xx1.com|*.xx2.com</nonProxyHosts>
</proxy>
</proxies>
- 服务器认证(servers/server*):支持用户名/密码,公钥/私钥两种认证方式
<servers>
<server>
<!-- 服务标识 -->
<id>server1</id>
<!-- 用户名 -->
<username>wang</username>
<!-- 密码 -->
<password>123</password>
</server>
<server>
<id>server2</id>
<privateKey>wang</username>
<passphrase>456</passphrase>
</server>
</servers>
- 镜像(mirrors/mirror*):用配置覆盖一个或者多个仓库的配置
<mirrorOf>
元素:*
= everythingexternal:*
= everything not on the localhost and not file based.repo,repo1
= repo or repo1*,!repo1
= everything except repo1
<mirrors>
<mirror>
<!-- 镜像id,唯一标识 -->
<id>central-mirror</id>
<!-- 镜像名称 -->
<name>Maven China Mirror</name>
<!-- 镜像地址 -->
<url>http://search.maven.org/#browse</url>
<!-- 这个是谁的镜像,覆盖哪个仓库的配置 -->
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
- 环境差异文件(profiles/profile*):
<profiles>
<!--通过某些条件匹配来激活不同<profile>,如jdk、os、属性和属性值等等-->
<profile>
<!-- 唯一标识id -->
<id>jdk-1.6</id>
<!-- 激活条件 -->
<activation>
<jdk>1.6</jdk>
</activation>
<!-- 键值对属性 -->
<properties>
<property.key>property.value</property.key>
<!--
maven支持使用占位符的方式设置或获取值
1.env:操作系统环境变量
2.project.x:当前project的属性
3.setttings.x:对应settings.xml文件的属性
4.properties文件中的属性(redis.ip=10.11.12.13):redis.ip
5.x:<properties>中设置的属性
-->
<anykey>${env.path}</anykey>
</properties>
<!-- 仓库配置 -->
<repositories>
<repository>
<id>仓库id</id>
<name>仓库名称</name>
<url>仓库url</url>
<layout>在Maven 2/3中都是default,只有在Maven 1.x中才是legacy,默认也是default</layout>
<!-- 发布的稳定版本 -->
<releases>
<checksumPolicy>当组件校验失败时,warn或fail</checksumPolicy>
<enabled>是否使用此库下载组件</enabled>
<updatePolicy>当组件在本地不存在时的更新策略:always、daily(default)、interval:xx(in minutes)、never</updatePolicy>
</releases>
<!-- 快照版本,注释同上 -->
<snapshots>
<checksumPolicy></checksumPolicy>
<enabled></enabled>
<updatePolicy></updatePolicy>
</snapshots>
</repository>
</repositories>
<!-- 插件仓库 -->
<pluginRepositories>
<pluginRepository>
<!-- 配置与repository类似 -->
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--激活某个差异文件(activeProfiles/activeProfile*)-->
<!-- 指定某个profile生效 -->
<activeProfiles>
<activeProfile>对应profile id</activeProfile>
</activeProfiles>
- 当插件groupId没有显示提供,使用此groupId进行查找(pluginGroups/pluginGroup*):
<pluginGroups>
<!-- 当插件groupId没有显示提供,使用此groupId查找插件 -->
<!-- 官网:(Many) List of groupIds to search for a plugin when that plugin groupId is not explicitly provided. -->
<pluginGroup>org.mortbay.jetty</pluginGroup>
<pluginGroup>org.codehaus.cargo</pluginGroup>
</pluginGroups>