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/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>
1 LocalRepository
作用:设置本地仓库的路径
默认值: ${user.home}/.m2/repository
Eg:
<localRepository>C:\work\repository</localRepository>
2 InteractiveMode
作用:表示maven是否需要和用户交互以获得输入(暂时不清楚)
默认值:true
3 UsePluginRegistry
作用:maven是否需要使用plugin-registry.xml文件来管理插件版本
默认:false
4 Offline
作用:表示maven是否需要在离线模式下运行
默认:false
注:在网络不好或安全因素时,可以设置为True
5 PluginGroups
作用:当插件的groupid没有显示提供时,提供默认的groupId列表
默认有:org.apache.maven.plugins 和 org.codehaus.mojo
6 proxies
作用:Maven在进行联网时需要使用到的代理
Eg:
<proxies>
<proxy>
<id>xxx</id>
<active>true</active>
<protocol>http</protocol>
<username>用户名</username>
<password>密码</password>
<host>代理服务器地址</host>
<port>代理服务器的端口</port>
<nonProxyHosts>不使用代理的主机</nonProxyHosts>
</proxy>
</proxies>
7 servers
作用:配置deploy时远程服务器的用户名和密码(上传项目时,在POM中的distributionManagement的URL的验证信息,有些远程服务器也需要用户密码才能下载依赖)
Eg:
<servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
8 Mirrors
作用:镜像仓库(加速jar下载,替代访问 默认的maven的远程仓库(https://repo1.maven.org/maven2/)或者设置的远程仓库,常用于配置 阿里云镜像或 私服镜像)
Eg:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
9 profiles
作用:配置多种环境参数的profile
<profiles>
<profile>
<!-- profile的唯一标识 -->
<id>nexus</id>
<!-- 自动触发profile的条件逻辑 -->
<activation />
<!-- 扩展属性列表 -->
<properties />
<!-- 远程仓库列表 -->
<repositories />
<!-- 插件仓库列表 -->
<pluginRepositories />
</profile>
</profiles>
9.1 activation:自动触发该profile
的条件逻辑
Eg:
<activation>
<!--profile默认是否激活的标识 -->
<activeByDefault>false</activeByDefault>
<!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。 -->
<jdk>1.5</jdk>
<!--当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 -->
<os>
<!--激活profile的操作系统的名字 -->
<name>Windows XP</name>
<!--激活profile的操作系统所属家族(如 'windows') -->
<family>Windows</family>
<!--激活profile的操作系统体系结构 -->
<arch>x86</arch>
<!--激活profile的操作系统版本 -->
<version>5.1.2600</version>
</os>
<!--如果Maven检测到某一个属性(其值可以在POM中通过${name}引用),其拥有对应的name = 值,Profile就会被激活。如果值字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 -->
<property>
<!--激活profile的属性的名称 -->
<name>mavenVersion</name>
<!--激活profile的属性的值 -->
<value>2.0.3</value>
</property>
<!--提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活profile。另一方面,exists则会检查文件是否存在,如果存在则激活profile。 -->
<file>
<!--如果指定的文件存在,则激活profile。 -->
<exists>${basedir}/file2.properties</exists>
<!--如果指定的文件不存在,则激活profile。 -->
<missing>${basedir}/file1.properties</missing>
</file>
</activation>
9.2 properties:存放变量,如果该profile激活,那么在pom.xml 可以用${xx}来使用
Eg:
<properties>
<nexus.ip>http://127.0.0.1:8082</nexus.ip>
</properties>
pom文件里可以使用${nexus.ip}这个变量
9.3 Repositories:下载依赖的jar的远程仓库的列表
注意:一般包括releases(稳定版)和snapshots(快照版)
Eg:
<repositories>
<repository>
<id>central</id>
<url>${nexus.ip}/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
9.4 pluginRepositories:发现下载插件的远程仓库列表
Eg:
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>${nexus.ip}/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
10 ActiveProfiles
作用:手动激活profiles的列表,可以同时激活多个profile,如果有相同属性,后面的会覆盖前面的
Eg:
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
注:
1 一般配置阿里云镜像仓库就可以了,配置镜像仓库可以在settings.xml 里的mirrors 或 profile的repositories里 或 pom文件的profile的repository里配置。镜像仓库是不需要验证信息的
2 nexus的配置: