maven配置文件詳解
1 首先,setting.xml一般存在與兩個地方:maven的安裝目錄/conf/,和${user.home}/.m2/下。他們的區別是在maven安裝目錄下的setting.xml是所有用戶都可以應用的配置,而user.home下的可想而知就是針對某一用戶的配置(推薦是在user.home下)。如果兩個都進行了配置,則在應用的時候會將兩個配置文件進行中和,而且user.home下的setting.xml優先級大於maven安裝目錄下的。
2 setting.xml文件中頂層元素一覽:
[html] view plain copy
- <span style="font-family:Microsoft YaHei;"><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></span>
下面對各個元素進行解析:
2.1 localRepository
建構系統本地倉庫的路徑,不設置的話默認是在{user.home}/.m2/repository/下,如果想要系統所有用戶共用一個本地倉庫,則可以在maven安裝目錄下的setting.xml中進行設置
2.2 interactiveMode
指定Maven是否試圖與用戶交互來得到輸入,默認是true
2.3 usePluginRegistry
如果設置為true,則在{user.home}/.m2下需要有一個plugin-registry.xml來對plugin的版本進行管理。默認是false
2.4 offline
如果不想每次編譯的時候都去查找遠程中心倉庫,就需要設置為true,但前提是本地倉庫中已有需要的jar包,默認是false
2.5 pluginGroups
該元素包含一系列的pluginGroup元素,每個pluginGroup又有一個groupId,當一個plugin被使用而在命令行中哦給沒有指定groupId的時候,就會查詢這個列表
2.6 Servers
maven除了一般的本地倉庫和中央倉庫之外,還有一種是遠程倉庫,一般部署在局域網中供Maven用戶使用(成為私服),當maven需要下載構件的時候,它先從私服中請求,如果沒有,再到外部的中央倉庫中下載,同時下載的構件會在下載到私服中供以後使用,或者用戶可以將將構件上傳到私服中。
私服還有一個好處就是存放組織內部自己生成的私有構件,這類構件不可能從外部的中央倉庫獲取,但是組織內部用戶又需要共享使用,這個時候就需要私服了。
一般私服建立完畢之後不需要認證就可以訪問,但是處於安全方面的考慮,需要提供認證信息才能訪問這些私服,這時就需要使用servers元素(需要註意的是配置私服的信息是在pom文件中,但是認證信息則是在setting.xml中,這是因為pom文件往往是被提交到代碼倉庫中供所有成員訪問的,而setting.xml是存放在本地的,這樣是安全的)。
而maven是根據pom中的repositories和distributionMnagement元素來決定,然後運行maven clean deploy,這樣maven就根據pom中的配置將自己的第三方構件部署在私服上供組織內其他用戶使用(註意maven clean deploy和maven clean install的區別:deploy是將該構件部署在私服中,而install是將構件存入自己的本地倉庫中)。
2.7 morriors
顯而易見,鏡像,也供maven下載jar包
2.8 proxies
當用戶 用代理登錄下載時需要配置(但是我現在是在使用代理,可是還是沒有作用,原因未知?)
2.9 profiles(??)
2.10 activeProfiles(??)
maven配置文件詳解