可能存在的兩個地方,前一種設置稱爲全局設置,後一種設置稱爲用戶設置。若是兩個文件都存在,它們的內容將被合併,以用戶特定的settings.xml爲主。apache
<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 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/><!-- 本地存儲庫的路徑。默認值是${user.home}/.m2/repository --> <interactiveMode/><!-- 若是爲true,說明Maven試圖與用戶進行輸入交互。默認值爲true --> <offline/><!-- 脫機模式下運行,默認爲false。若是沒法鏈接網絡,設置爲false --> <pluginGroups/><!-- 插件組 --> <servers/><!-- 服務器信息 --> <mirrors/><!-- 鏡像 --> <proxies/><!-- 代理 --> <profiles/><!-- 配置文件 --> <activeProfiles/><!-- 須要激活配置文件 --> </settings>
<localRepository>G:\maven</localRepository>
包括三種倉庫服務器
倉庫讀取順序
步驟 1 - 在本地倉庫中搜索,若是找不到,執行步驟 2,若是找到了則執行其餘操做。
步驟 2 - 在中央倉庫中搜索,若是找不到,而且有一個或多個遠程倉庫已經設置,則執行步驟 4,若是找到了則下載到本地倉庫中以備未來引用。
步驟 3 - 若是遠程倉庫沒有被設置,Maven 將簡單的停滯處理並拋出錯誤(沒法找到依賴的文件)。
步驟 4 - 在一個或多個遠程倉庫中搜索依賴的文件,若是找到則下載到本地倉庫以備未來引用,不然 Maven 將中止處理並拋出錯誤(沒法找到依賴的文件)網絡
訪問遠程服務器須要的信息ssh
<servers> <server> <id>server001</id><!-- 這是服務器的ID(而不是登陸的用戶的ID),它與Maven試圖鏈接的存儲庫/鏡像的ID元素相匹配 --> <username>my_login</username><!-- 驗證此服務器所需的登陸名 --> <password>my_password</password><!-- 驗證此服務器所需的密碼 --> <privateKey>${user.home}/.ssh/id_dsa</privateKey><!-- 鑑權時使用的私鑰位置 --> <passphrase>some_passphrase</passphrase><!-- 鑑權時使用的私鑰 --> <filePermissions>664</filePermissions><!-- 在部署時建立存儲庫文件時使用的權限 --> <directoryPermissions>775</directoryPermissions><!-- 在部署時建立存儲庫目錄時使用的權限 --> <configuration></configuration><!-- 其餘配置 --> </server> </servers>
當以爲國外服務器慢的時候,能夠用鏡像,好比阿里的。鏡像的優先級大於倉庫。Maven不會聚合鏡像,而只是選擇第一個匹配。若是但願提供多個存儲庫,請使用存儲庫管理器。maven
<mirrors> <mirror> <id>planetmirror.com</id><!-- 鏡像的id,若是與server的id同樣,說明用該server的配置信息鏈接此鏡像 --> <name>PlanetMirror Australia</name><!-- 鏡像的名稱 --> <url>http://downloads.planetmirror.com/pub/maven2</url><!-- 鏡像的地址 --> <mirrorOf>central</mirrorOf><!-- 被鏡像存儲庫的服務器ID,這必須與鏡像id不匹配。 --> </mirror> </mirrors>
根據mirrorOf匹配規則以下:佈局
代理google
<proxies> <proxy> <id>myproxy</id><!-- 代理的id --> <active>true</active><!-- true說明這個代理是激活的 --> <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>
配置文件,每一個profile由activation, repositories, pluginRepositories和properties組成url
當全部指定的條件都知足時,激活就會發生,儘管不是全部的條件都須要同時知足操作系統
<activation> <activeByDefault>false</activeByDefault><!-- 是否激活 --> <jdk>1.5</jdk><!-- JDK檢測 --> <os><!-- 操做系統檢測 --> <name>Windows XP</name><!-- 操做系統 --> <family>Windows</family><!-- 操做系統家族 --> <arch>x86</arch><!-- 操做系統 --> <version>5.1.2600</version><!-- 操做系統版本 --> </os> <property><!-- 若是Maven檢測到對應的name和value,則配置文件將被激活 --> <name>mavenVersion</name> <value>2.0.3</value> </property> <file><!-- 根據文件存在/不存在激活profile --> <!-- 根據文件存在激活profile --> <exists>${basedir}/file2.properties</exists> <!-- 根據文件不存在激活profile --> <missing>${basedir}/file1.properties</missing> </file> </activation>
值佔位符插件
<properties> <user.install>${user.home}/our-project</user.install> </properties>
遠程倉庫集合
<repositories> <repository> <id>codehausSnapshots</id><!-- 遠程倉庫id --> <name>Codehaus Snapshots</name><!-- 遠程倉庫名稱 --> <releases> <enabled>false</enabled><!-- 是否提供下載 --> <updatePolicy>always</updatePolicy><!-- 構建時檢查頻率,always老是, daily (default)一天只檢查一次, interval:X距離上次多少分鐘才檢查 , never從不檢查 --> <checksumPolicy>warn</checksumPolicy> <!-- Maven驗證artifact校驗文件缺乏或不正確採起的策略:ignore忽略, fail失敗,warn警告 --> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://snapshots.maven.codehaus.org/maven2</url><!-- 遠程倉庫地址 --> <layout>default</layout><!-- default or legacy,佈局:默認仍是遺留 --> </repository> </repositories> <pluginRepositories>
直接激活配置
<activeProfiles> <activeProfile>env-test</activeProfile> </activeProfiles>