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的配置: