maven - settings.xml文件詳解

Settings.xml配置文件詳解

maven默認的settings.xml是一個包含註釋和例子的模板,能夠快速的修改settings.xml文件java

maven安裝後不會在用戶目錄下自動生成settings.xml,通常是將/maven/conf下的settings.xml文件拷貝過去進行相應的修shell

<?xml version="1.0" encoding="UTF-8"?>
<
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 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <!-- 本地倉庫的路徑,默認值是~/.m2/repository -->  <localRepository>/path/to/local/repo</localRepository>
<!-- maven是否須要和用戶交互,默認值是true --> <interactiveMode>true</interactiveMode>

 <!-- 是否使用plugin-registry.xml文件來管理插件版本 -->
 <usePluginRegistry>false</usePluginRegistry>
 
<!--
    maven是否須要在離線模式下運行
    true:通常用於構建服務器不能鏈接遠程倉庫的時候,基於網絡或者安全考慮
    默認爲false -->
<offline>false</offline>
<!--
    當插件的組織ID(groupId)沒有提供的時候,供搜尋插件組織的列表
    包含<pluginGroup>元素列表,每個子元素包含一個組織ID(groupId)
    默認包含org.apache.maven.plugins -->  
<pluginGroups> <!-- plugin的組織ID(groupId) --> <pluginGroup>com.your.plugins</pluginGroup> </pluginGroups> <!-- 配置多種代理,包含<proxy>元素 --> <proxies> <!-- 配置代理時須要的信息 --> <proxy>
    <!-- 代理惟一id,用於區分不一樣的代理 --> <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> <!-- 配置服務端的設置,包含server元素--> <servers> <!-- 包含配置服務器是須要的信息 --> <server>
    <!-- server的id,與distributionManagement中repository的id相匹配 -->  <id>deploymentRepo</id>
    <!-- 鑑權用戶名,表示服務器認證須要的用戶名/密碼 -->  <username>repouser</username>
    <!-- 鑑權密碼 --> <password>repopwd</password>
    <!-- 鑑權時使用的私鑰位置,私鑰位置和私鑰密碼指定一個私鑰的路徑(默認是/home/hudson/.ssh/id_dsa) -->  <privateKey>/path/to/private/key</privateKey>
    <!-- 鑑權時使用的私鑰密碼 -->  <passphrase>optional; leave empty if not used.</passphrase>
    <!--
      文件被建立時的權限,若是在部署的時候會建立一個倉庫文件或者目錄,這時須要使用權限
      該元素的合法值是一個三位數字,對應unix文件系統的權限 -->
    <filePermissions>664</filePermissions>
    <!-- 目錄建立時的權限 --> 
    <directoryPermissions>775</directoryPermissions>
    <!-- 傳輸層的額外配置項 -->

    <configuration></configuration> </server>
</servers> <!-- 下載的鏡像列表 --> <mirrors> <!-- 鏡像信息 --> <mirror>
    <!-- 鏡像惟一標識 -->  <id>mirrorId</id>
    <!-- -->  <mirrorOf>repositoryId</mirrorOf>
    <!-- 鏡像名稱 -->  <name>Human Readable Name for this Mirror.</name>
    <!-- 鏡像URL -->  <url>http://my.repository.com/repo/path</url> </mirror>
</mirrors> <!--
    根據環境參數來調整構建配置的列表
    settings.xml中的profiles是pom.xml中profiles的裁剪版
    包含<id>,<activation>,<repository>,<pluginRepository>,<properties>元素
   settings.xml中的profiles只包含這幾個元素是由於settings.xml文件只關心構建系統的總體而非單獨的項目對象模型設置
    若是一個profile被激活,它的值會覆蓋任何其定義在pom.xml或profile.xml中相同id的profile  -->
<profiles> <!-- 根據環境參數調整構建配置 --> <profile>
    <!-- 該配置的惟一標識 --> <id>jdk-1.4</id>
    <!--
       自動觸發profile的邏輯條件
       和pom.xml中的profile同樣,在特定的環境中自動使用某些特定的值
       這些特定的值經過activation指定 --> 
    <activation>
     <!-- profile默認是否激活,默認false -->
     <activeByDefault>false</activeByDefault>
     <!-- activation有一個java版本檢測,若是檢測的版本與當前配置一致則profile被激活 --> <jdk>1.4</jdk>
     <!-- 當匹配的操做系統屬性被檢測到時,profile被激活 -->
     <os>
       <!-- 操做系統名稱 -->
       <name>Windows XP</name>
       <!-- 操做系統所屬的家族 -->
       <family>Windows</family>
       <!-- 操做系統體系結構 -->
       <arch>x86</arch>
       <!-- 操做系統版本 -->
       <version>5.1.2600<version>
     </os>
     <!-- 屬性檢測,若是擁有對應的名稱和值,profile將會被激活 -->
     <property>
       <!-- 激活profile的屬性名稱 -->
       <name>mavenVersion</name>
       <!-- 激活profile的值 -->
       <value>2.0.3</value>  
     </property>
     <!-- 經過檢測文件是否存在激活profile -->  
     <file>
       <!-- 文件存在則激活profile -->  
       <exists>/usr/local/min/workspace</exists>
       <!-- 文件不存在則激活profile -->  
       <missing>/usr/local/min/workspace</missing>   
     </file>         
  </activation>     
    <!-- 遠程倉庫列表,是maven用來填充構建系統本地倉庫所使用的一組遠程項目 --> <repositories>
     <!-- 遠程倉庫 --> <repository>
      <!-- 遠程倉庫惟一標識 --> <id>jdk14</id>
      <!-- 遠程倉庫名稱 --> <name>Repository for JDK 1.4 builds</name>
      <!-- 遠程倉庫url --> <url>http://www.myhost.com/maven/jdk14</url>
      <!-- maven 2爲倉庫提供的默認佈局,maven 1.x有另外一個不一樣的佈局,經過default/legacy指定 --> <layout>default</layout> <snapshotPolicy>always</snapshotPolicy> </repository> </repositories>
    
    <!-- 插件遠程倉庫 -->
    <pluginRepositories>
      <pluginRepository>

      <pluginRepository>
    </pluginRepositories>
    <!--
       對應profile的擴展屬性列表,和ant中的屬性同樣,能夠用來存放值,這些值能夠在pom的任何地方使用${x}訪問,x指代屬性名稱
       <env.x>:返回shell環境變量 
       <project.x>:指代pom對應的元素值
       <settings.x>:指代settings.xml中對應的元素值
       <x>:在<properties/>中或外部文件中使用${x}形式使用      
    -->
    <properties>
      <var>value</var>
    </properties>
   </profile>
 
  </profiles>
  <!-- 手動激活的profile列表 -->
  <activeProfiles>
    <!-- 若是有匹配的profile則pom.xml或者profile.xml中對應id的profile被激活 -->
    <activeProfile>value</activeProfile>
  </activeProfiles>  
</
settings>

 實際應用中,常常使用到的是<localRepository>,<servers>,<mirrors>,<profiles>幾個節點

<localRepository>:配置本地倉庫地址

<servers>:服務端配置,多用於鑑權操做

<mirrors>:鏡像配置,如使用阿里雲鏡像

<profiles>:系統構建配置,涉及整個系統的構建,可讓maven自動適應外部環境的變化

主要元素有:激活<activation>,倉庫<repositories>,插件倉庫<pluginRepositories>,屬性<properties>apache

一個項目能夠設置多個profile,也能夠在同一時間設置多個profile被激活安全

自動激活條件主要有:操做系統相關參數的判斷,JDK版本的檢查,屬性值的檢查,文件檢查服務器

若是settings.xml中的profile被激活,則其值會覆蓋pom.xml或profile.xml中同等id的profile網絡

相關文章
相關標籤/搜索