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>
主要元素有:激活<activation>,倉庫<repositories>,插件倉庫<pluginRepositories>,屬性<properties>apache
一個項目能夠設置多個profile,也能夠在同一時間設置多個profile被激活安全
自動激活條件主要有:操做系統相關參數的判斷,JDK版本的檢查,屬性值的檢查,文件檢查服務器
若是settings.xml中的profile被激活,則其值會覆蓋pom.xml或profile.xml中同等id的profile網絡