Maven的settings.xml配置

settings.xml是Maven的配置文件,下面解釋一下其中的配置含義:

settings.xml存在於兩個地方:

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

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

前者又被叫做全局配置,後者被稱爲用戶配置。如果兩者都存在,它們的內容將被合併,並且用戶範圍的settings.xml優先。

<?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 即 ${user.home}/.m2/repository。 -->
  <localRepository>d:/mvn-repository</localRepository>

	<!--指定Maven是否需要和用戶輸入進行交互。true:需要與用戶交互;false:使用一個合理的默認值。默認值爲true。 -->
  <interactiveMode>true</interactiveMode>

  <!--指定是否使用plugin-registry.xml文件來管理插件版本。設爲true表示使用。默認值爲false。-->
  <usePluginRegistry>false</usePluginRegistry>

  <!--指定是否在離線模式下運行。設爲true表示項目構建要在離線模式下運行,默認值爲false。 -->
  <offline>false</offline>

	<!-- 指定插件groupId列表,用於搜索時插件的groupId沒有明確規定。 -->
	<pluginGroups>
	 	<!-- 指定使用插件查找進一步的組標識符 -->
		<pluginGroup>com.micmiu.plugins</pluginGroup>
	</pluginGroups>

  <!-- 指定這臺機器連接到網絡的代理服務器的列表。除非另有規定(系統屬性或命令行開關),
       列表中配置的第一代理將被激活使用。-->
  <proxies>
    <!-- 配置代理服務器的相關參數 -->
    <proxy>
    	<!-- 代理標識ID,默認值:default -->
      <id>micmiuProxy</id>
      <!-- 指定是否激活,默認值:true -->
      <active>true</active>
      <!-- 指定代理協議,默認值:http -->
      <protocol>http</protocol>
      <!-- 指定代理認證的用戶名 -->
      <username>micmiu</username>
      <!-- 指定代理認證用戶的密碼 -->
      <password>mypwd</password>
      <!-- 指定代理服務器的主機名 -->
      <host>micmiu.com</host>
      <!-- 指定代理服務的端口 默認值:8080 -->
      <port>80</port>
      <!-- 指定不被代理的主機名列表。多個用|分隔。-->
      <nonProxyHosts>ctosun.com|ctosun.micmiu.com</nonProxyHosts>
    </proxy>
  </proxies>

  <!-- 這是一個認證配置的列表,系統內部根據配置的serverID使用。認證配置用於maven鏈接到遠程服務-->
  <servers>
    <!-- 指定的身份認證信息用於連接到一個特定的服務器時,確定系統內的唯一的名稱(簡稱下面的'id'屬性)。-->
    <server>
      <!-- 這是server的id(注意不是用戶登陸的id)。該id與distributionManagement中repository元素的id必須要匹配。-->
      <id>micmiu-releases</id>
      <!-- 服務器認證的用戶名 -->
      <username>michael</username>
      <!-- 服務器認證的用戶對應的密碼 -->
      <password>mypwd</password>
    </server>

    <!-- 另一個示例 私鑰/密碼 -->
    <server>
      <id>micmiu-snapshots</id>
      <!-- 認證時使用的私鑰文件。 -->
      <privateKey>/home/micmiu/.ssh/id_dsa</privateKey>
      <!-- 認證時使用的私鑰密碼,沒有密碼就設爲空 -->
      <passphrase>mypwd</passphrase>
      <!-- 目錄被創建時的權限設置。其值對應了unix文件系統的權限,如664,或者775 -->
      <directoryPermissions>775</directoryPermissions>
      <!-- 倉庫文件創建時的權限設置。其值對應了unix文件系統的權限,如664,或者775。 -->
      <filePermissions>664</filePermissions>
    </server>
  </servers>

  <!-- 指定鏡像列表,用於從遠程倉庫下載資源 -->
  <mirrors>
    <!-- 指定倉庫的鏡像站點,代替一個給定的庫。該鏡像藏庫有一個ID相匹配的mirrorOf元素。
         ID是用於繼承和直接查找目的,必須是唯一的。-->
    <mirror>
    	<!--該鏡像的唯一標識符。id用來區分不同的mirror元素。 -->
      <id>mirrorId</id>
      <!--被鏡像的服務器的id,比如:central,不能和id匹配。-->
   		<mirrorOf>central</mirrorOf>
      <name>micmiu for dev.</name>
      <url>http://dev.micmiu.com/repo/maven2</url>
    </mirror>

  </mirrors>

  <!-- 這是一個可以在各種不同的方式激活的配置文件列表,並可以修改構建過程。在settings.xml中提供的信息,
       旨在提供本地機器允許建立在本地環境中工作的具體路徑和庫位置。有多種方式可以激活配置屬性:一種在settings.xml中<activeProfiles>指定;
       另一種實質上依賴於系統屬性,無論是匹配特定的屬性值或只是測試到它的存在.配置文件也可以根據JDK版本的前綴進行激活,1.4 可以激活1.4.2_07
    注:對於在settings.xml中定義的配置,你僅限於指定資源倉庫、插件倉庫和用於插件在POM中變量的自由形式屬性的定義 -->
  <profiles>
    <!-- 指定生成過程的介紹,使用一個或多個上述機制被激活。對於繼承而言,激活通過<activatedProfiles/>或命令行配置文件,
         配置文件必須有一個唯一的ID。此配置文件的例子使用的JDK版本觸發激活。-->
    <profile>
    	<!--該配置的唯一標識符。 -->
      <id>jdk-1.4</id>

			<!--自動觸發配置文件的邏輯定義。Activation的邏輯配置決定了是否開啓該profile。activation元素並不是激活profile的唯一方式。
			    settings.xml文件中的activeProfile元素可指定需要激活的profile的id。
			    profile也可以通過在命令行,使用-P標記和逗號分隔的列表來顯式的激活 -->
      <activation>
      	<!--指定是否激活的標識 默認值爲false-->
    		<activeByDefault>false</activeByDefault>

      	<!--當匹配的jdk被檢測到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有不是以1.4開頭的JDK版本。-->
        <jdk>1.4</jdk>

        <!-- 當檢測到匹配的操作系統屬性時,指定該配置文件將被激活, -->
       	<os>
		     	<!--激活profile的操作系統的名字 -->
		     	<name>windows 7</name>
		     	<!--激活profile的操作系統所屬家族(如 'windows')  -->
		     	<family>windows</family>
		    	<!--激活profile的操作系統體系結構  -->
		     	<arch>x86</arch>
		     	<!--激活profile的操作系統版本-->
		     	<version>6.1</version>
	    	</os>

	    	<!-- 檢測系統對應的屬性和值(該值可在POM中通過${屬性名稱}引用),配置就會被激活。
	    	    如果值字段是空的,那麼存在屬性名稱字段就會激活 -->
		    <property>
		     	<!-- 屬性的名稱 -->
		     	<name>mavenVersion</name>
		     	<!-- 屬性的值 -->
		    	<value>3.0.4</value>
		    </property>
		    <!-- 通過檢測該文件的是否存在來激活配置。missing檢查文件是否存在,如果不存在則激活profile;exists則會檢查文件是否存在,如果存在則激活。-->
		    <file>
		    	<!--如果指定的文件存在,則激活profile。 -->
		    	<exists>/usr/local/micmiu/workspace/myfile</exists>
		    	<!--如果指定的文件不存在,則激活profile。-->
		    	<missing>/usr/local/micmiu/workspace/myfile</missing>
		    </file>
      </activation>

			<!-- 對應profile的擴展屬性列表。Maven屬性和Ant中的屬性一樣,可以用來存放一些值。這些值可以在POM中的任何地方使用標記${X}來使用,
			     這裏X是指屬性的名稱。屬性有五種不同的形式,並且都能在settings.xml文件中訪問。
   					1. env.X: 表示系統環境變量。例如,"env.PATH" 等同於 $path環境變量(在Windows上是%PATH%)。
					  2. project.x:表示 POM中對應的屬性值。
					  3. settings.x: 表示 settings.xml中對應屬性值。
					  4. Java系統屬性: 所有可通過java.lang.System.getProperties()訪問的屬性都能在POM中使用該形式訪問。
					  5. x: 在<properties/>元素中,或者外部文件中設置,以${someVar}的形式使用。 -->
		 	<properties>
		  	<user.blog>www.micmiu.com</user.blog>
		  </properties>

    </profile>

    <!-- 這是另一個配置文件,根據系統屬性來激活 -->
    <profile>
    	<!--該配置的唯一標識符。 -->
      <id>env-dev</id>
      <activation>
        <property>
        	<!-- 被用來激活配置文件的屬性的名稱 -->
          <name>target-env</name>
          <!-- 被用來激活配置文件的屬性的值 -->
          <value>dev</value>
        </property>
      </activation>
      <!-- 指定配置文件的擴展配置 內容採取property.value的形式 -->
      <properties>
        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
      </properties>
    </profile>

    <profile>
			<id>repo-dev</id>
			<!-- 配置遠程倉庫列表 -->
			<repositories>
				<!-- 遠程倉庫的配置信息 -->
				<repository>
					<!-- 遠程倉庫唯一標識-->
					<id>nexus</id>
					<!-- 遠程倉庫名稱 -->
					<name>nexus for develop</name>
					<!-- 遠程倉庫URL -->
					<url>http://192.168.1.8:8080/nexus/content/groups/public/</url>
					<layout>default</layout>
					<releases>
						<!--是否使用這個資源庫下載這種類型的構件 默認值:true-->
						<enabled>true</enabled>
						<!--指定下載更新的頻率。這裏的選項是:always(一直),daily(每日,默認值),interval:X(這裏X是指分鐘),或者never(從不)。 -->
			      <updatePolicy>daily</updatePolicy>
			      <!--當Maven驗證構件校驗文件失敗時該怎麼做fail(失敗)或者warn(告警)。-->
			      <checksumPolicy>warn</checksumPolicy>
					</releases>
					<snapshots>
						<!--是否使用這個資源庫下載這種類型的構件 默認值:true-->
						<enabled>true</enabled>
						<!--指定下載更新的頻率。這裏的選項是:always(一直),daily(每日,默認值),interval:X(這裏X是指分鐘),或者never(從不)。 -->
			      <updatePolicy>daily</updatePolicy>
			      <!--當Maven驗證構件校驗文件失敗時該怎麼做fail(失敗)或者warn(告警)。-->
			      <checksumPolicy>warn</checksumPolicy>
					</snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>nexus</id>
					<name>local nexus</name>
					<url>http://192.168.1.8:8080/nexus/content/groups/public</url>
					<layout>default</layout>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>

  </profiles>

  <!-- 指定被激活的配置文件-->
  <activeProfiles>
    <activeProfile>repo-dev</activeProfile>
  </activeProfiles>
</settings>

 

 

發佈了294 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章