1. 程式人生 > >maven的settings.xml配置詳解

maven的settings.xml配置詳解

maven的配置檔案settings.xml存在於兩個地方:

1.安裝的地方:${M2_HOME}/conf/settings.xml

2.使用者的目錄:${user.home}/.m2/settings.xml

前者又被叫做全域性配置,對作業系統的所有使用者生效;後者被稱為使用者配置,只對當前作業系統的使用者生效。如果兩者都存在,它們的內容將被合併,並且使用者範圍的settings.xml會覆蓋全域性的settings.xml。

Maven安裝後,使用者目錄下不會自動生成settings.xml,只有全域性配置檔案。如果需要建立使用者範圍的settings.xml,可以將安裝路徑下的settings複製到目錄${user.home}/.m2/。Maven預設的settings.xml是一個包含了註釋和例子的模板,可以快速的修改它來達到你的要求。

全域性配置一旦更改,所有的使用者都會受到影響,而且如果maven進行升級,所有的配置都會被清除,所以要提前複製和備份${M2_HOME}/conf/settings.xml檔案,一般情況下不推薦配置全域性的settings.xml。

[html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <settingsxmlns="http://maven.apache.org/POM/4.0.0"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5.     <!--本地倉庫。該值表示構建系統本地倉庫的路徑。其預設值為${user.home}/.m2/repository。  -->
  6.     <localRepository>usr/local/maven</localRepository>
  7.     <!--Maven是否需要和使用者互動以獲得輸入。如果Maven需要和使用者互動以獲得輸入,則設定成true,反之則應為false。預設為true。 -->
  8.     <interactiveMode>true</interactiveMode>
  9.     <!--Maven是否需要使用plugin-registry.xml檔案來管理外掛版本。  -->
  10.     <!--如果設定為true,則在{user.home}/.m2下需要有一個plugin-registry.xml來對plugin的版本進行管理  -->
  11.     <!--預設為false。 -->
  12.     <usePluginRegistry>false</usePluginRegistry>
  13.     <!--表示Maven是否需要在離線模式下執行。如果構建系統需要在離線模式下執行,則為true,預設為false。  -->
  14.     <!--當由於網路設定原因或者安全因素,構建伺服器不能連線遠端倉庫的時候,該配置就十分有用。  -->
  15.     <offline>false</offline>
  16.     <!--當外掛的組織Id(groupId)沒有顯式提供時,供搜尋外掛組織Id(groupId)的列表。  -->
  17.     <!--該元素包含一個pluginGroup元素列表,每個子元素包含了一個組織Id(groupId)。  -->
  18.     <!--當我們使用某個外掛,並且沒有在命令列為其提供組織Id(groupId)的時候,Maven就會使用該列表。  -->
  19.     <!--預設情況下該列表包含了org.apache.maven.plugins。  -->
  20.     <pluginGroups>
  21.         <!--plugin的組織Id(groupId)  -->
  22.         <pluginGroup>org.codehaus.mojo</pluginGroup>
  23.     </pluginGroups>
  24.     <!--用來配置不同的代理,多代理profiles可以應對筆記本或移動裝置的工作環境:通過簡單的設定profile id就可以很容易的更換整個代理配置。  -->
  25.     <proxies>
  26.         <!--代理元素包含配置代理時需要的資訊 -->
  27.         <proxy>
  28.             <!--代理的唯一定義符,用來區分不同的代理元素。 -->
  29.             <id>myproxy</id>
  30.             <!--該代理是否是啟用的那個。true則啟用代理。當我們聲明瞭一組代理,而某個時候只需要啟用一個代理的時候,該元素就可以派上用處。  -->
  31.             <active>true</active>
  32.             <!--代理的協議。 協議://主機名:埠,分隔成離散的元素以方便配置。 -->
  33.             <protocol>http://…</protocol>
  34.             <!--代理的主機名。協議://主機名:埠,分隔成離散的元素以方便配置。   -->
  35.             <host>proxy.somewhere.com</host>
  36.             <!--代理的埠。協議://主機名:埠,分隔成離散的元素以方便配置。  -->
  37.             <port>8080</port>
  38.              <!--代理的使用者名稱,使用者名稱和密碼錶示代理伺服器認證的登入名和密碼。  -->
  39.             <username>proxyuser</username>
  40.             <!--代理的密碼,使用者名稱和密碼錶示代理伺服器認證的登入名和密碼。  -->
  41.             <password>somepassword</password>
  42.             <!--不該被代理的主機名列表。該列表的分隔符由代理伺服器指定;例子中使用了豎線分隔符,使用逗號分隔也很常見。 -->
  43.             <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
  44.         </proxy>
  45.     </proxies>
  46.     <!--配置服務端的一些設定。一些設定如安全證書不應該和pom.xml一起分發。這種型別的資訊應該存在於構建伺服器上的settings.xml檔案中。 -->
  47.     <servers>
  48.         <!--伺服器元素包含配置伺服器時需要的資訊  -->
  49.         <server>
  50.             <!--這是server的id(注意不是使用者登陸的id),該id與distributionManagement中repository元素的id相匹配。 -->
  51.             <id>server001</id>
  52.             <!--鑑權使用者名稱。鑑權使用者名稱和鑑權密碼錶示伺服器認證所需要的登入名和密碼。  -->
  53.             <username>my_login</username>
  54.             <!--鑑權密碼 。鑑權使用者名稱和鑑權密碼錶示伺服器認證所需要的登入名和密碼。  -->
  55.             <password>my_password</password>
  56.             <!--鑑權時使用的私鑰位置。和前兩個元素類似,私鑰位置和私鑰密碼指定了一個私鑰的路徑(預設是/home/hudson/.ssh/id_dsa)以及如果需要的話,一個金鑰 -->
  57.             <!--將來passphrase和password元素可能會被提取到外部,但目前它們必須在settings.xml檔案以純文字的形式宣告。  -->
  58.             <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
  59.             <!--鑑權時使用的私鑰密碼。 -->
  60.             <passphrase>some_passphrase</passphrase>
  61.             <!--檔案被建立時的許可權。如果在部署的時候會建立一個倉庫檔案或者目錄,這時候就可以使用許可權(permission)。-->
  62.             <!--這兩個元素合法的值是一個三位數字,其對應了unix檔案系統的許可權,如664,或者775。  -->
  63.             <filePermissions>664</filePermissions>
  64.             <!--目錄被建立時的許可權。  -->
  65.             <directoryPermissions>775</directoryPermissions>
  66.             <!--傳輸層額外的配置項  -->
  67.             <configuration></configuration>
  68.         </serve