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>
相關文章
相關標籤/搜索