Maven settings.xml配置解读

本文对${maven.home}\conf\settings.xml的官方文档作个简单的解读,请确保自己的maven环境安装成功,具体安装流程详见Maven安装

settings.xml主配置文件

笔者此处优先查看其注释内容,信息如下

<!--
 | This is the configuration file for Maven. It can be specified at two levels:
 |  #用户级别,面向单个用户配置,即每个用户都可以自定义settings.xml供己方使用
 |  1. User Level. This settings.xml file provides configuration for a single user,
 |                 and is normally provided in ${user.home}/.m2/settings.xml.
 |
 |#其中的CLI选项指的是mvn操作命令的相关参数比如:mvn -v
 |                 NOTE: This location can be overridden with the CLI option:
 |
 |                 -s /path/to/user/settings.xml
 |  #全局级别,即面向所有用户同一配置
 |  2. Global Level. This settings.xml file provides configuration for all Maven
 |                 users on a machine (assuming they're all using the same Maven
 |                 installation). It's normally provided in
 |                 ${maven.home}/conf/settings.xml.
 |
 |                 NOTE: This location can be overridden with the CLI option:
 |
 |                 -gs /path/to/global/settings.xml
 |
 | The sections in this sample file are intended to give you a running start at
 | getting the most out of your Maven installation. Where appropriate, the default
 | values (values used when the setting is not specified) are provided.
 |
 |-->

由上可得

  1. settings.xml具有两个级别:用户级别和全局级别
  2. settings.xml配置的是其他工程项目pom.xml中的全局配置

全局配置主要参数配置

信息如下

    localRepository 本地仓库配置路径
    interactiveMode 是否交互式输入提醒。默认true
    offline 是否每次编译部署时候需要联网,默认false
    pluginGroups 插件组合,供编译时选用
    proxies 代理配置,连接本地无法远程的网络
    servers 服务配置,上传构件/连接仓库所用
    mirrors 替代有网络问题的repository的访问站点
    profiles 应用于不同环境的配置
    activeProfiles 激活指定的配置,与profile搭配使用

参数详解

对上述的参数分别作下一一的详解,更多的详细解释可详见官网Maven-Settings Reference

localRepository

保存远程下载的构建的本地位置,采用绝对路径,默认存放在${user.home}/.m2/repository

<!-- localRepository
    | The path to the local repository maven will use to store artifacts.
    |
    | Default: ${user.home}/.m2/repository-->
interactiveMode

交互式节点配置,默认为true,设置为false则会在mvn执行中使用默认的参数设置交互性问题,建议设置为true

<!-- interactiveMode
   | This will determine whether maven prompts you when it needs input. If set to false,
   | maven will use a sensible default value, perhaps based on some other setting, for
   | the parameter in question.
   |
   | Default: true-->
offline

是否每次的编译部署都需要联网,默认为false。如果构件不需要更新下载则可设置为true,以提高build效率和成功率。

<!-- offline
   | Determines whether maven should attempt to connect to the network when executing a build.
   | This will have an effect on artifact downloads, artifact deployment, and others.
   |
   | Default: false-->
pluginGroups

插件组,默认包含maven插件、mojo插件,用于插件在使用时没有指定groupId时,这个列表就会被搜索。

!-- pluginGroups
   | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
   | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
   | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
   |-->

举个例子:mvn jetty run替代长命令org.morbay.jetty:jetty-maven-plugin:run

<pluginGroups>
    <pluginGroup>
        org.mortbay.jetty
    </pluginGroup>
</pluginGroups>
proxies

代理配置,默认以第一个proxy配置起效

<!-- proxies 
   | This is a list of proxies which can be used on this machine to connect to the network.
   | Unless otherwise specified (by system property or command-line switch), the first proxy
   | specification in this list marked as active will be used.
   |-->
  <proxies>
    <!-- proxy 新增一个代理配置示例
     | Specification for one proxy, to be used in connecting to the network.
     |
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
    -->
  </proxies>
servers

上传或者下载构建需要验证的服务器配置,通过id来区分,主要与mirror/repository参数搭配使用


密码方式校验

 <!-- servers
   | This is a list of authentication profiles, keyed by the server-id used within the system.
   | Authentication profiles can be used whenever maven must make a connection to a remote server.
   |-->
  <servers>
    <!-- server
     | Specifies the authentication information to use when connecting to a particular server, identified by
     | a unique name within the system (referred to by the 'id' attribute below).
     |
     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
     |       used together.
     |
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
    -->

privateKey方式校验

  <servers>
    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    -->
  </servers>
mirrors

构建镜像,替代有网络问题的仓库的访问站点,即当下载的maven构建有问题时可通过此配置替换原有的下载地址

<!-- mirrors
   | This is a list of mirrors to be used in downloading artifacts from remote repositories.
   |
   | It works like this: a POM may declare a repository to use in resolving certain artifacts.
   | However, this repository may have problems with heavy traffic at times, so people have mirrored
   | it to several places.
   |
   | That repository definition will have a unique id, so we can create a mirror reference for that
   | repository, to be used as an alternate download site. The mirror site will be the preferred
   | server for that repository. //central代表maven官网的中央仓库
   |-->

举个例子:

    <mirror>
        <!--与server参数配置的id属性一致-->
        <id>${server_id}</id>
        <!--拦截指定的仓库,支持多仓库id,以逗号分隔(*代表拦截所有的仓库)-->
        <mirrorOf>${repository_id}/*</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <!--server对应的地址-->
        <url>http://my.repository.com/repo/path</url>#镜像url
    </mirror>
profiles

多条件集合配置,用于不同条件下可应用不同的配置,其中也可配置自定义的repository/pluginRepository

    | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
    <profile>
      <id>jdk-1.4</id>
      <!--在此配置的任何一个节点条件满足则触发此配置-->
      <activation>
        <jdk>1.4</jdk>
      </activation>
      <!--仓库配置-->
      <repositories>
        <repository>
          <id>jdk14</id>#与server的id一致
          <name>Repository for JDK 1.4 builds</name>
          <releases>#发布版本
                <enabled>false</enabled>#不允许在发布版本中寻找构件
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>#快照版本
                <enabled>true</enabled>#允许在快照版本中寻找构件
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
          </snapshots>
          <url>http://www.myhost.com/maven/jdk14</url>
          <layout>default</layout>
          <snapshotPolicy>always</snapshotPolicy>
        </repository>
      </repositories>
    </profile>
activeProfiles

profile参数搭配使用,用于激活相应的profile配置,可激活多个配置

  <activeProfiles>
    <activeProfile>${profile_id1}</activeProfile>
    <activeProfile>${profile_id2}</activeProfile>
  </activeProfiles>

distributionManagement(pom配置)

上传构件的配置,需要server验证。构件在上传的时候会根据构件的version是否含有snapshot字眼来自动上传至相应的版本库(与server参数搭配使用)

    <distributionManagement>
        <repository>
            <id>${release_server_id}</id>
            <url></url>
        </repository>
        <snapshotRepository>
            <id>${snapshot_server_id}</id>
            <url></url>
        </snapshotRepository>
    </distributionManagement>
repositories(pom配置)

统一的下载构件配置,与mirror参数搭配使用

<repositories>
    <repository>
        <!--unique id-->
        <id>${server_id}</id>   
        <!--下载构件的仓库url-->
        <url>https://repo.maven.apache.org/maven2/</url>
        <releases>
            <!--不支持发布版本的查询-->
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <!--支持快照版本的查询-->
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

总结

  1. server参数是服务器的配置,有密码校验方式和私钥校验方式。其下的id配置应用于mirror/repositoryid配置

  2. mirror参数配置会根据其内部的mirrorOf配置拦截指定的repository,如果指定为*则会拦截所有的仓库;指定为central则会拦截https://repo.maven.apache.org/maven2/地址

  3. distributionManagement/repositories是专属于pom.xml中的配置,请勿配置在settings.xml中,这里只作总结

  4. distributionManagement参数是配置构件上传,repositories/mirror参数是配置构建下载

转载于:https://www.cnblogs.com/question-sky/p/6538909.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值