MAVEN学习之settings.xml

settings.xml

可能存在的两个地方,前一种设置称为全局设置,后一种设置称为用户设置。若是两个文件都存在,它们的内容将被合并,以用户特定的settings.xml为主。apache

  1. MAVEN的安装位置: ${maven.home}/conf/settings.xml
  2. 用户的文件夹: ${user.home}/.m2/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 -->
    <interactiveMode/><!-- 若是为true,说明Maven试图与用户进行输入交互。默认值为true -->
    <offline/><!-- 脱机模式下运行,默认为false。若是没法链接网络,设置为false -->
    <pluginGroups/><!-- 插件组 -->
    <servers/><!-- 服务器信息 -->
    <mirrors/><!-- 镜像 -->
    <proxies/><!-- 代理 -->
    <profiles/><!-- 配置文件 -->
    <activeProfiles/><!-- 须要激活配置文件 -->
</settings>

localRepository

<localRepository>G:\maven</localRepository>

包括三种仓库服务器

  • 本地仓库(local):.m2/respository/
  • 中央仓库(central):Maven 社区提供的仓库
  • 远程仓库(remote):其余远程仓库

仓库读取顺序
步骤 1 - 在本地仓库中搜索,若是找不到,执行步骤 2,若是找到了则执行其余操做。
步骤 2 - 在中央仓库中搜索,若是找不到,而且有一个或多个远程仓库已经设置,则执行步骤 4,若是找到了则下载到本地仓库中以备未来引用。
步骤 3 - 若是远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(没法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,若是找到则下载到本地仓库以备未来引用,不然 Maven 将中止处理并抛出错误(没法找到依赖的文件)网络

servers

访问远程服务器须要的信息ssh

<servers>
    <server>
      <id>server001</id><!-- 这是服务器的ID(而不是登陆的用户的ID),它与Maven试图链接的存储库/镜像的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>

mirrors

当以为国外服务器慢的时候,能够用镜像,好比阿里的。镜像的优先级大于仓库。Maven不会聚合镜像,而只是选择第一个匹配。若是但愿提供多个存储库,请使用存储库管理器。maven

<mirrors>
    <mirror>
      <id>planetmirror.com</id><!-- 镜像的id,若是与server的id同样,说明用该server的配置信息链接此镜像 -->
      <name>PlanetMirror Australia</name><!-- 镜像的名称 -->
      <url>http://downloads.planetmirror.com/pub/maven2</url><!-- 镜像的地址 -->
      <mirrorOf>central</mirrorOf><!-- 被镜像存储库的服务器ID,这必须与镜像id不匹配。 -->
    </mirror>
</mirrors>

根据mirrorOf匹配规则以下:布局

  • = 匹配全部远程仓库
  • external:* = 匹配除 localhost、使用 file:// 协议外的全部远程仓库
  • repo,repo1:* = 匹配仓库 repo1 和 repo2,central表明替换中央仓库
  • ,!repo1: = 匹配全部远程仓库, 但不包括 repo1

Proxies

代理google

<proxies>
    <proxy>
      <id>myproxy</id><!-- 代理的id -->
      <active>true</active><!-- true说明这个代理是激活的 -->
      <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>

Profiles

配置文件,每一个profile由activation, repositories, pluginRepositories和properties组成url

activation

当全部指定的条件都知足时,激活就会发生,尽管不是全部的条件都须要同时知足操作系统

<activation>
    <activeByDefault>false</activeByDefault><!-- 是否激活 -->
    <jdk>1.5</jdk><!-- JDK检测 -->
    <os><!-- 操做系统检测 -->
      <name>Windows XP</name><!-- 操做系统 -->
      <family>Windows</family><!-- 操做系统家族 -->
      <arch>x86</arch><!-- 操做系统 -->
      <version>5.1.2600</version><!-- 操做系统版本 -->
    </os>
    <property><!-- 若是Maven检测到对应的name和value,则配置文件将被激活 -->
      <name>mavenVersion</name>
      <value>2.0.3</value>
    </property>    
    <file><!-- 根据文件存在/不存在激活profile -->
      <!-- 根据文件存在激活profile -->
      <exists>${basedir}/file2.properties</exists>
      <!-- 根据文件不存在激活profile -->
      <missing>${basedir}/file1.properties</missing>
    </file>
</activation>

properties

值占位符插件

<properties>
    <user.install>${user.home}/our-project</user.install>
</properties>

repositories

远程仓库集合

<repositories>
    <repository>
      <id>codehausSnapshots</id><!-- 远程仓库id -->
      <name>Codehaus Snapshots</name><!-- 远程仓库名称 -->
      <releases>
        <enabled>false</enabled><!-- 是否提供下载 -->
        <updatePolicy>always</updatePolicy><!-- 构建时检查频率,always老是, daily (default)一天只检查一次, interval:X距离上次多少分钟才检查 , never从不检查 -->
        <checksumPolicy>warn</checksumPolicy> <!-- Maven验证artifact校验文件缺乏或不正确采起的策略:ignore忽略, fail失败,warn警告 -->
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
      <url>http://snapshots.maven.codehaus.org/maven2</url><!-- 远程仓库地址 -->
      <layout>default</layout><!-- default or legacy,布局:默认仍是遗留 -->
    </repository>
  </repositories>
<pluginRepositories>

ActiveProfiles

直接激活配置

<activeProfiles>
    <activeProfile>env-test</activeProfile>
</activeProfiles>
相关文章
相关标签/搜索