Maven之setting.xml解析
阿新 • • 發佈:2018-11-26
1、宣告規範
<?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">
2、元素概覽
<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"> <localRepository/> <interactiveMode/> <usePluginRegistry/> <offline/> <pluginGroups/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/> </settings>
3、元素解釋
<localRepository>D:\apache-maven-3.3.9\repository</localRepository> #本地倉庫路徑 <interactiveMode>true</interactiveMode> #是否需要和使用者互動以獲得輸入。如果Maven需要和使用者互動以獲得輸入,則設定成true,反之則應為false。預設為true。 <usePluginRegistry>false</usePluginRegistry> #Maven是否需要使用plugin-registry.xml檔案來管理外掛版本。如果需要讓Maven使用檔案${user.home}/.m2/plugin-registry.xml來管理外掛版本,則設為true。預設為false。 <offline>false</offline> #Maven是否需要在離線模式下執行。如果構建系統需要在離線模式下執行,則為true,預設為false。當由於網路設定原因或者安全因素,構建伺服器不能連線遠端倉庫的時候,該配置就十分有用。 <pluginGroups/> #外掛組 <proxies/> #通過安全認證的代理訪問因特網 <servers></servers> # 1.定義jar包下載的Maven倉庫 2. 定義部署伺服器 <mirrors></mirrors> #倉庫列表配置的下載映象列表 <profiles></profiles> #用於定義屬性鍵值對的。當該profile是啟用狀態的時候,properties下面指定的屬性都可以在pom.xml中使用 <repositories></repositories> #用於定義遠端倉庫的,當該profile是啟用狀態的時候,這裡面定義的遠端倉庫將作為當前pom的遠端倉庫 <activeProfiles></activeProfiles> #啟用配置
3、重要元素詳解
proxies:有時候你所在的公司基於安全因素考慮,要求你使用通過安全認證的代理訪問因特網。這時就需要為Maven配置HTTP代理。
<!--用來配置不同的代理,多代理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>
####servers:
<!--配置服務端的一些設定。一些設定如安全證書不應該和pom.xml一起分發。這種型別的資訊應該存在於構建伺服器上的settings.xml檔案中。-->
<servers>
<!--伺服器元素包含配置伺服器時需要的資訊 -->
<server>
<!--這是server的id(注意不是使用者登陸的id),該id與distributionManagement中repository元素的id相匹配。-->
<id>server001</id>
<!--鑑權使用者名稱。鑑權使用者名稱和鑑權密碼錶示伺服器認證所需要的登入名和密碼。 -->
<username>my_login</username>
<!--鑑權密碼 。鑑權使用者名稱和鑑權密碼錶示伺服器認證所需要的登入名和密碼。密碼加密功能已被新增到2.1.0 +。詳情請訪問密碼加密頁面-->
<password>my_password</password>
<!--鑑權時使用的私鑰位置。和前兩個元素類似,私鑰位置和私鑰密碼指定了一個私鑰的路徑(預設是${user.home}/.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>
</server>
</servers>
一般使用:
<servers>
<server>
<id>nexus-snapshots</id>
<username>username</username>
<password>password</password>
</server>
</servers>
mirrors:
<mirrors>
<mirror>
<!--該映象的唯一識別符號。id用來區分不同的mirror元素。 -->
<id>my-nexus</id>
<!--此處配置所有的構建均從私有倉庫中下載 *代表所有,也可以寫central -->
<mirrorOf>*</mirrorOf>
<name>central repository</name>
<!--該映象的URL。構建系統會優先考慮使用該URL,而非使用預設的伺服器URL。 -->
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
profiles、repositories、pluginRepositories:
<profiles>
<profile>
<id>nexus</id>
<!--遠端倉庫列表,它是Maven用來填充構建系統本地倉庫所使用的一組遠端專案。 -->
<repositories>
<!--釋出版本倉庫-->
<repository>
<id>nexus</id>
<!--name隨便-->
<name>Nexus Release Snapshot Repository</name>
<!--地址是nexus中repository(Releases/Snapshots)中對應的地址-->
<url>http://ip:8081/repository/maven-releases/</url>
<!--true或者false表示該倉庫是否為下載某種型別構件(釋出版,快照版)開啟。 -->
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!--發現外掛的遠端倉庫列表。倉庫是兩種主要構件的家。第一種構件被用作其它構件的依賴。這是中央倉庫中儲存的大部分構件型別。另外一種構件型別是外掛。-->
<!--各節點的含義和repository是一樣的-->
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Release Snapshot Repository</name>
<url>http://ip:8081/repository/maven-snapshots/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<!--設定maven編譯器級別-->
<profile>
<id>jdk18</id>
<activation>
<!--profile預設是否啟用的標識 -->
<activeByDefault>true</activeByDefault>
<!--activation有一個內建的java版本檢測,如果檢測到jdk版本與期待的一樣,profile被啟用。 -->
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
activeProfiles:
<!--啟用配置-->
<activeProfiles>
<!--profile下的id-->
<activeProfile>nexus</activeProfile>
</activeProfiles>