Maven的Settings.xml配置文件解釋

該配置用于單用戶配置和全局配置,?

單用戶配置默認存放于?${user.home}/.m2/目錄中.

全局配置默認存放于Maven安裝目錄下面的conf目錄中.

這兩個默認的位置都可以修改.

<?xml version="1.0" encoding="UTF-8"?>  <settings   xmlns="http://maven.apache.org/POM/4.0.0"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  <!--本地倉庫。該值表示構建系統本地倉庫的路徑。其默認值為${user.home}/.m2/repository。  -->  <localRepository>usr/local/maven</localRepository>  <!--Maven是否需要和用戶交互以獲得輸入。如果Maven需要和用戶交互以獲得輸入,則設置成true,反之則應為false。默認為true。 -->  <interactiveMode>true</interactiveMode>  <!--Maven是否需要使用plugin-registry.xml文件來管理插件版本。  -->  <!--如果設置為true,則在{user.home}/.m2下需要有一個plugin-registry.xml來對plugin的版本進行管理  -->  <!--默認為false。 -->  <usePluginRegistry>false</usePluginRegistry>  <!--表示Maven是否需要在離線模式下運行。如果構建系統需要在離線模式下運行,則為true,默認為false。  -->  <!--當由于網絡設置原因或者安全因素,構建服務器不能連接遠程倉庫的時候,該配置就十分有用。  -->  <offline>false</offline>  <!--當插件的組織Id(groupId)沒有顯式提供時,供搜尋插件組織Id(groupId)的列表。  -->  <!--該元素包含一個pluginGroup元素列表,每個子元素包含了一個組織Id(groupId)。  -->  <!--當我們使用某個插件,并且沒有在命令行為其提供組織Id(groupId)的時候,Maven就會使用該列表。  -->  <!--默認情況下該列表包含了org.apache.maven.plugins。  -->  <pluginGroups>  <!--plugin的組織Id(groupId)  -->  <pluginGroup>org.codehaus.mojo</pluginGroup>  </pluginGroups>  <!--用來配置不同的代理,多代理profiles可以應對筆記本或移動設備的工作環境:通過簡單的設置profile id就可以很容易的更換整個代理配置。  -->  <proxies>  <!--代理元素包含配置代理時需要的信息 -->  <proxy>  <!--代理的唯一定義符,用來區分不同的代理元素。 -->  <id>myproxy</id>  <!--該代理是否是激活的那個。true則激活代理。當我們聲明了一組代理,而某個時候只需要激活一個代理的時候,該元素就可以派上用處。  -->  <active>true</active>  <!--代理的協議。 協議://主機名:端口,分隔成離散的元素以方便配置。 -->  <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>  <!--配置服務端的一些設置。一些設置如安全證書不應該和pom.xml一起分發。這種類型的信息應該存在于構建服務器上的settings.xml文件中。 -->  <servers>  <!--服務器元素包含配置服務器時需要的信息  -->  <server>  <!--這是server的id(注意不是用戶登陸的id),該id與distributionManagement中repository元素的id相匹配。 -->  <id>server001</id>  <!--鑒權用戶名。鑒權用戶名和鑒權密碼表示服務器認證所需要的登錄名和密碼。  -->  <username>my_login</username>  <!--鑒權密碼 。鑒權用戶名和鑒權密碼表示服務器認證所需要的登錄名和密碼。  -->  <password>my_password</password>  <!--鑒權時使用的私鑰位置。和前兩個元素類似,私鑰位置和私鑰密碼指定了一個私鑰的路徑(默認是/home/hudson/.ssh/id_dsa)以及如果需要的話,一個密鑰 -->  <!--將來passphrase和password元素可能會被提取到外部,但目前它們必須在settings.xml文件以純文本的形式聲明。  -->  <privateKey>${usr.home}/.ssh/id_dsa</privateKey>  <!--鑒權時使用的私鑰密碼。 -->  <passphrase>some_passphrase</passphrase>  <!--文件被創建時的權限。如果在部署的時候會創建一個倉庫文件或者目錄,這時候就可以使用權限(permission)。-->  <!--這兩個元素合法的值是一個三位數字,其對應了unix文件系統的權限,如664,或者775。  -->  <filePermissions>664</filePermissions>  <!--目錄被創建時的權限。  -->  <directoryPermissions>775</directoryPermissions>  <!--傳輸層額外的配置項  -->  <configuration></configuration>  </server>  </servers>  <!--為倉庫列表配置的下載鏡像列表。  -->  <mirrors>  <!--給定倉庫的下載鏡像。  -->  <mirror>  <!--該鏡像的唯一標識符。id用來區分不同的mirror元素。  -->  <id>planetmirror.com</id>  <!--鏡像名稱  -->  <name>PlanetMirror Australia</name>  <!--該鏡像的URL。構建系統會優先考慮使用該URL,而非使用默認的服務器URL。  -->  <url>http://downloads.planetmirror.com/pub/maven2</url>  <!--被鏡像的服務器的id。例如,如果我們要設置了一個Maven中央倉庫(http://repo1.maven.org/maven2)的鏡像,-->  <!--就需要將該元素設置成central。這必須和中央倉庫的id central完全一致。 -->  <mirrorOf>central</mirrorOf>  </mirror>  </mirrors>  <!--根據環境參數來調整構建配置的列表。settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。-->  <!--它包含了id,activation, repositories, pluginRepositories和 properties元素。-->  <!--這里的profile元素只包含這五個子元素是因為這里只關心構建系統這個整體(這正是settings.xml文件的角色定位),而非單獨的項目對象模型設置。-->  <!--如果一個settings中的profile被激活,它的值會覆蓋任何其它定義在POM中或者profile.xml中的帶有相同id的profile。  -->  <profiles>  <!--根據環境參數來調整的構件的配置 -->  <profile>  <!--該配置的唯一標識符。  -->  <id>test</id>  <!--自動觸發profile的條件邏輯。Activation是profile的開啟鑰匙。-->  <!--如POM中的profile一樣,profile的力量來自于它能夠在某些特定的環境中自動使用某些特定的值;這些環境通過activation元素指定。-->  <!--activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以包含profile的id。-->  <!--profile也可以通過在命令行,使用-P標記和逗號分隔的列表來顯式的激活(如,-P test)。 -->  <activation>  <!--profile默認是否激活的標識 -->  <activeByDefault>false</activeByDefault>  <!--activation有一個內建的java版本檢測,如果檢測到jdk版本與期待的一樣,profile被激活。 -->  <jdk>1.7</jdk>  <!--當匹配的操作系統屬性被檢測到,profile被激活。os元素可以定義一些操作系統相關的屬性。 -->  <os>  <!--激活profile的操作系統的名字  -->  <name>Windows XP</name>  <!--激活profile的操作系統所屬家族(如 'windows')   -->  <family>Windows</family>  <!--激活profile的操作系統體系結構   -->  <arch>x86</arch>  <!--激活profile的操作系統版本 -->  <version>5.1.2600</version>  </os>  <!--如果Maven檢測到某一個屬性(其值可以在POM中通過${名稱}引用),其擁有對應的名稱和值,Profile就會被激活。-->  <!--如果值字段是空的,那么存在屬性名稱字段就會激活profile,否則按區分大小寫方式匹配屬性值字段 -->  <property>  <!--激活profile的屬性的名稱 -->  <name>mavenVersion</name>  <!--激活profile的屬性的值  -->  <value>2.0.3</value>  </property>  <!--提供一個文件名,通過檢測該文件的存在或不存在來激活profile。missing檢查文件是否存在,如果不存在則激活profile。-->  <!--另一方面,exists則會檢查文件是否存在,如果存在則激活profile。 -->  <file>  <!--如果指定的文件存在,則激活profile。  -->  <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</exists>  <!--如果指定的文件不存在,則激活profile。 -->  <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</missing>  </file>  </activation>  <!--對應profile的擴展屬性列表。Maven屬性和Ant中的屬性一樣,可以用來存放一些值。這些值可以在POM中的任何地方使用標記${X}來使用,這里X是指屬性的名稱。-->  <!--屬性有五種不同的形式,并且都能在settings.xml文件中訪問。   -->  <!--1. env.X: 在一個變量前加上"env."的前綴,會返回一個shell環境變量。例如,"env.PATH"指代了$path環境變量(在Windows上是%PATH%)。  -->   <!--2. project.x:指代了POM中對應的元素值。      -->  <!--3. settings.x: 指代了settings.xml中對應元素的值。   -->  <!--4. Java System Properties: 所有可通過java.lang.System.getProperties()訪問的屬性都能在POM中使用該形式訪問,   -->  <!--   如/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre。      -->  <!--5. x: 在<properties/>元素中,或者外部文件中設置,以${someVar}的形式使用。  -->  <properties>  <!-- 如果這個profile被激活,那么屬性${user.install}就可以被訪問了 -->  <user.install>usr/local/winner/jobs/maven-guide</user.install>  </properties>  <!--遠程倉庫列表,它是Maven用來填充構建系統本地倉庫所使用的一組遠程項目。  -->  <repositories>  <!--包含需要連接到遠程倉庫的信息  -->  <repository>  <!--遠程倉庫唯一標識 -->  <id>codehausSnapshots</id>  <!--遠程倉庫名稱  -->  <name>Codehaus Snapshots</name>  <!--如何處理遠程倉庫里發布版本的下載 -->  <releases>  <!--true或者false表示該倉庫是否為下載某種類型構件(發布版,快照版)開啟。   -->  <enabled>false</enabled>  <!--該元素指定更新發生的頻率。Maven會比較本地POM和遠程POM的時間戳。這里的選項是:-->  <!--always(一直),daily(默認,每日),interval:X(這里X是以分鐘為單位的時間間隔),或者never(從不)。  -->  <updatePolicy>always</updatePolicy>  <!--當Maven驗證構件校驗文件失敗時該怎么做:-->  <!--ignore(忽略),fail(失敗),或者warn(警告)。 -->  <checksumPolicy>warn</checksumPolicy>  </releases>  <!--如何處理遠程倉庫里快照版本的下載。有了releases和snapshots這兩組配置,POM就可以在每個單獨的倉庫中,為每種類型的構件采取不同的策略。-->  <!--例如,可能有人會決定只為開發目的開啟對快照版本下載的支持。參見repositories/repository/releases元素 -->  <snapshots>  <enabled />  <updatePolicy />  <checksumPolicy />  </snapshots>  <!--遠程倉庫URL,按protocol://hostname/path形式  -->  <url>http://snapshots.maven.codehaus.org/maven2</url>  <!--用于定位和排序構件的倉庫布局類型-可以是default(默認)或者legacy(遺留)。-->  <!--Maven 2為其倉庫提供了一個默認的布局;然而,Maven 1.x有一種不同的布局。我們可以使用該元素指定布局是default(默認)還是legacy(遺留)。  -->  <layout>default</layout>  </repository>  </repositories>  <!--發現插件的遠程倉庫列表。倉庫是兩種主要構件的家。第一種構件被用作其它構件的依賴。這是中央倉庫中存儲的大部分構件類型。另外一種構件類型是插件。-->  <!--Maven插件是一種特殊類型的構件。由于這個原因,插件倉庫獨立于其它倉庫。pluginRepositories元素的結構和repositories元素的結構類似。-->  <!--每個pluginRepository元素指定一個Maven可以用來尋找新插件的遠程地址。 -->  <pluginRepositories>  <!--包含需要連接到遠程插件倉庫的信息.參見profiles/profile/repositories/repository元素的說明 -->  <pluginRepository>  <releases>  <enabled />  <updatePolicy />  <checksumPolicy />  </releases>  <snapshots>  <enabled />  <updatePolicy />  <checksumPolicy />  </snapshots>  <id />  <name />  <url />  <layout />  </pluginRepository>  </pluginRepositories>  <!--手動激活profiles的列表,按照profile被應用的順序定義activeProfile。 該元素包含了一組activeProfile元素,每個activeProfile都含有一個profile id。-->  <!--任何在activeProfile中定義的profile id,不論環境設置如何,其對應的 profile都會被激活。-->  <!--如果沒有匹配的profile,則什么都不會發生。例如,env-test是一個activeProfile,則在pom.xml(或者profile.xml)中對應id的profile會被激活。-->  <!--如果運行過程中找不到這樣一個profile,Maven則會像往常一樣運行。  -->  <activeProfiles>  <activeProfile>env-test</activeProfile>  </activeProfiles>  </profile>  </profiles>  </settings>  

?

<profile>節點

在倉庫的配置一節中,已經對setting.xml中的常用節點做了詳細的說明。在這里需要特別介紹一下的是<profile>節點的配置,profile是maven的一個重要特性。

<profile>節點包含了激活(activation)倉庫(repositories)插件倉庫(pluginRepositories)屬性(properties)共四個子元素元素。profile元素僅包含這四個元素是因為他們涉及到整個的構建系統,而不是個別的項目級別的POM配置。

profile可以讓maven能夠自動適應外部的環境變化,比如同一個項目,在Linux下編譯linux的版本,在win下編譯win的版本等。一個項目可以設置多個profile,也可以在同一時間設置多個profile被激活(active)的。自動激活的 profile的條件可以是各種各樣的設定條件,組合放置在activation節點中,也可以通過命令行直接指定。如果認為profile設置比較復雜,可以將所有的profiles內容移動到專門的 profiles.xml 文件中,不過記得和pom.xml放在一起。

activation節點是設置該profile在什么條件下會被激活,常見的條件有如下幾個:

1.???os

判斷操作系統相關的參數,它包含如下可以自由組合的子節點元素

message - 規則失敗之后顯示的消息

arch - 匹配cpu結構,常見為x86

family - 匹配操作系統家族,常見的取值為:dos,mac,netware,os/2,unix,windows,win9x,os/400等

name - 匹配操作系統的名字

version - 匹配的操作系統版本號

display - 檢測到操作系統之后顯示的信息

2.???jdk

檢查jdk版本,可以用區間表示。

3.???property

檢查屬性值,本節點可以包含name和value兩個子節點。

4.???file

檢查文件相關內容,包含兩個子節點:exists和missing,用于分別檢查文件存在和不存在兩種情況。

如果settings中的profile被激活,那么它的值將覆蓋POM或者profiles.xml中的任何相等ID的profiles

如果想要某個profile默認處于激活狀態,可以在<activeProfiles>中將該profile的id放進去。這樣,不論環境設置如何,其對應的?profile都會被激活。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541710.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541710.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541710.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux ntp手動授時,關于我校NTP授時服務的使用說明

校園網用戶&#xff1a;我中心于近期采購了GPS北斗授時服務設備&#xff0c;該設備可實現純GPS模式、純北斗模式和混合模式與衛星對時&#xff0c;同時實現對校內設備授時的功能。支持所有NTP協議的服務器、PC、嵌入式設備等&#xff0c;包括但不限于&#xff1a;Microsoft Win…

一串字符串轉換為ascii_將ASCII字符串(char [])轉換為C中的BYTE數組

一串字符串轉換為asciiGiven an ASCII string (char[]) and we have to convert it into BYTE array (BYTE[]) in C. 給定一個ASCII字符串(char [])&#xff0c;我們必須將其轉換為C語言中的BYTE數組(BYTE [])。 Logic: 邏輯&#xff1a; To convert an ASCII string to BYTE…

debugging Auto Layout:Logical Errors

Logical Errors邏輯錯誤 Logical errors are simply bugs. Somewhere, you have an assumption that is faulty. Perhaps it’s an assumption about how Auto Layout calculates the views’ frames. Perhaps it’s an assumption about the set of constraints that you’ve …

linux反序列化漏洞,思科多個產品Java反序列化漏洞(CVE-2015-6420)

思科多個產品Java反序列化漏洞(CVE-2015-6420)發布日期&#xff1a;2015-12-15更新日期&#xff1a;2015-12-17受影響系統&#xff1a;Cisco Unified ComputingCisco Voice and Unified Communications DevicesCisco Wireless描述&#xff1a;CVE(CAN) ID: CVE-2015-6420思科是…

密碼學替代技術_替代技術及其類型| 密碼學

密碼學替代技術As we already discussed what are the Substitution techniques and one of its type Ceasar Cipher? So we are not discussing it here for that please refer to Cryptography: CeasarCipher here: Cryptography: Caesar Cipher and its Python Implementat…

Flask+uwsgi+Nginx環境搭建

2019獨角獸企業重金招聘Python工程師標準>>> 開源軟件準備 需要的軟件列表&#xff1a; setuptools-33.1.1.zip Python-2.7.13.tgz pip-9.0.1.tar.gz nginx-1.10.3.tar.gz 軟件統一上傳到/usr/local/src/下&#xff0c;python是使用自己編譯的。Python安裝 先安裝以…

穿越迷宮c語言程序設計教程課后答案,實驗二 迷宮實驗.doc

#include #define ROW 11#define COLUMN 15typedef struct{ /*棧中的數據元素的類型定義*/int row; /*行下標*/int col; /*列下標*/int direction; /*下一步移動方向*/} DATA;Typedif struct node{ /* 棧類定義*/DATA data;Struct node *next;}LinkStack;Typedef struct{/*移動…

ofb模式_密碼學中的輸出反饋模式(OFB)

ofb模式This is an output feedback (OFB) mode is similar in structure to that of CFB in Cryptography. It is the output of the encryption function that is fed back to the shift register in OFB in the cryptography, whereas in CFB in the mode of blocks, the ci…

JavaScript0-閉包

1.閉包的概念&#xff1a;在JavaScript中局部作用域總是能夠訪問到全局作用域&#xff0c;即內部函數總是能夠訪問到外部函數的參數和變量&#xff0c;即使內部函數調用完畢。也就是指有權訪問到函數作用域里的變量。 function fn1() {var x 0;return function() {cosole.log(…

win8編程c語言,Win8系統怎么運行C語言 win8系統運行C語言的方法

C語言是一門通用計算機編程語言&#xff0c;是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言&#xff0c;但是許多win8系統用戶并不知道要怎么運行C語言&#xff0c;針對這個情況&#xff0c;小編就給大家分享一…

stack示例_C.示例中的Stack.CopyTo()方法

stack示例C&#xff03;Stack.CopyTo()方法 (C# Stack.CopyTo() method) Stack.CopyTo() method is used to copy the stack elements/objects to an existing array from the given index. Stack.CopyTo()方法用于將堆棧元素/對象從給定索引復制到現有數組。 Syntax: 句法&am…

Linux sudoers文件的寫法

2019獨角獸企業重金招聘Python工程師標準>>> 文件的組成 sudoers文件由三部分組成&#xff1a; sudoers的默認配置&#xff0c;主要設置sudo的一些缺省值&#xff08;本文不會對這些默認配置進行介紹&#xff0c;若有興趣可以自己man 5 sudoers然后搜defaults)alias…

if是什么c語言,這個C語言是什么(if(1))?

我在openssl源代碼中注意到一個奇怪的成語,here并重復如下&#xff1a;if ((in NULL) && (passwds NULL)) {if (1) { (* #ifndef OPENSSL_NO_UI/* build a null-terminated list */static char *passwds_static[2] { NULL, NULL };passwds passwds_static;if (in …

c#queue_帶有C#示例的Queue.CopyTo()方法

c#queueC&#xff03;Queue.CopyTo()方法 (C# Queue.CopyTo() method) Queue.CopyTo() method is used to copy the Queue elements/objects to an existing array from specified index. Queue.CopyTo()方法用于將Queue元素/對象從指定的索引復制到現有數組。 Syntax: 句法&a…

指針在c語言中的運用,怎么理解C語言中的指針,如何運用?

恰好我之前寫了一系列介紹 C 語言的文章&#xff0c;介紹了什么是指針&#xff0c;以及為什么要使用指針&#xff0c;下面摘錄一部分&#xff0c;感興趣的話&#xff0c;可以點我了解更多。什么是 C語言指針&#xff1f;不同的數據類型的主要區別在于占用的存儲空間不同。我們知…

設計模式(一)單例模式的七種寫法

1. 餓漢模式 public class Singleton { private static Singleton instance new Singleton(); private Singleton (){}public static Singleton getInstance() { return instance; } } View Code這種方式在類加載時就完成了初始化&#xff0c;所以類加載較慢&#xff0c;…

scala 字符串轉換數組_如何在Scala中將字節數組轉換為字符串?

scala 字符串轉換數組Byte Array in Scala is an array of elements of a byte type. String in Scala is a collection of the character data type. Scala中的字節數組是字節類型的元素的數組。 Scala中的String是字符數據類型的集合。 將字節數組轉換為字符串 (Convert byt…

智能關機軟件 c語言,智能關機軟件

智能關機軟件是一款免費共享關機軟件。智能關機軟件不但具有定時關機、自動關機的功能&#xff0c;而且還可以進行定時提醒信息、打開文件、打開網頁、重啟計算機、注銷用戶、鎖定計算機、計算機休眠、計算機待機、關閉顯示器&#xff0c;并且可以進行多任務計劃&#xff0c;可…

wget: command not found

-bash: wget: command not found的兩種解決方法 今天給服務器安裝新LNMP環境時&#xff0c;wget 時提示 -bash:wget command not found,很明顯沒有安裝wget軟件包。一般linux最小化安裝時&#xff0c;wget不會默認被安裝。可以通過以下兩種方法來安裝&#xff1a;1、rpm 安裝rp…

數據庫數據規范化看不懂_數據庫管理系統中的規范化

數據庫數據規范化看不懂DBMS中的規范化 (Normalization in DBMS) Every table must have a single idea. The method by which we divide tables approximately is called normalization and the rest used for normalization is a functional dependency. For the normalizati…