0、Maven介紹
? ? ? ?Maven是一個項目管理工具。Maven提供了開發(fā)人員構建一個完整的生命周期框架。開發(fā)團隊可以自動完成項目的基礎工具建設,Maven使用標準的目錄結構和默認構建生命周期。
? ? ? ?在多個開發(fā)團隊環(huán)境時,Maven可以設置按標準在非常短的時間里完成配置工作。由于大部分項目的設置都很簡單,并且可重復使用,Maven讓開發(fā)人員的工作更輕松,同時創(chuàng)建報表,檢查,構建和測試自動化設置。
1、Maven安裝
? ? ? ?要使用Maven前要先在電腦上安裝Maven
? ? ? ?1. 下載地址:Maven
? ? ? ?2. 設置環(huán)境變量M2_HOME、MAVEN_HOME和PATH
? ? ? ?3. 檢驗Maven有沒有安詳成功,在命令行中輸入mvn -version
2、在IntelliJ IDEA配置Maven
? ? ? ?在IDEA的file/settings中選擇如下界面:
? ? ? ?將Maven home directory中的目錄改為步驟一中Maven壓縮包解壓縮的主目錄。User settings file和Local repository是工程自動配置的。
3、新建Maven工程
? ? ? ?一路Next,不需要進行額外的設置,最后出現(xiàn)這個頁面:
? ? ? ?需要注意的是,這里的groupId、artifactId和version指的是我們自建的項目的坐標值,而不是要添加的依賴關系的坐標值。
4、修改pom.xml
5、修改本地倉庫
? ? ? ?Maven會將工程中依賴的構件(Jar包)從遠程下載到本機一個目錄下管理,每個電腦默認的倉庫是在 $user.home/.m2/repository下。修改本地庫位置:在$MAVEN_HOME/conf/setting.xml文件中修改。
? ? ? ?修改完settings.xml配置文件后,需要手動在IDEA中更新xml文件。
? ? ? ?設置好本地倉庫后,從網(wǎng)上下載的所有jar包,都被丟到該目錄下,我們可以直接通過maven的pom.xml配置文件從本地倉庫中直接獲取已經下載好的jar包。
? ? ? ?當工程需要某個jar包時,其搜索順序如下:工程會優(yōu)先從本地倉庫中搜索jar包。如果本地倉庫中沒有jar包,配置了私服的話,就從私服中查找;私服中沒有,就會從互聯(lián)網(wǎng)中的中央倉庫中獲取,然后下載到我們的本地倉庫中,同時緩存在私服之上,下次再使用該jar包,就會直接從本地倉庫中拿取(私服是一種特殊的遠程Maven倉庫,它是架設在局域網(wǎng)內的倉庫服務,私服一般被配置為互聯(lián)網(wǎng)遠程倉庫的鏡像,供局域網(wǎng)內的Maven用戶使用。私服可以使用局域網(wǎng),但是中央倉庫必須使用外網(wǎng))。另外,對于自定義或第三方的jar可以從本地上傳到私服,供局域網(wǎng)內其他maven用戶使用。
6、如何獲取Maven坐標
1、登陸網(wǎng)頁:maven repository
2、搜索關鍵字
3、獲取坐標
7、修改鏡像
? ? ? ?mirror相當于一個攔截器,它會攔截maven對remote repository的相關請求,把請求里的remote repository地址,重定向到mirror里配置的地址。mirror表示的是兩個Repository之間的關系,在maven配置文件(setting.xml)里配置 了<mirrors><mirror>..........</mirror></mirrors>, 即定義了兩個Repository之間的鏡像關系。設置鏡像一般是為了加快訪問速度和下載速度,通過修改mirror,將對中央庫或者第三方庫的請求,都重新定向到某指定的鏡像倉庫,從該鏡像倉庫來下載jar包。
? ? ? ?上圖中,B Repository被稱為A Repository的鏡像。如果倉庫X可以提供倉庫Y存儲的所有內容,那么就可以認為X是Y的一個鏡像。換句話說,任何一個可以從倉庫Y獲得的構件,都能夠從它的鏡像中獲取。
? ? ? ?我自己修改的mirror配置如下,將zte內部私服設置為所有遠端庫的鏡像:
? ? ? ?這里需要注意下幾個字段的意思:
? ? ? ?id,name,url與一般倉庫配置無異,表示該鏡像倉庫的唯一標識符、名稱以及地址。類似地,如果該鏡像需認證,也可以基于該id配置倉庫認證。
? ? ? ?<mirrorOf></mirrorOf>標簽里面放置的是要被鏡像的Repository ID。其有如下幾種常見的配置:
? ? ? ?<mirrorOf>central</mirrorOf>表示該配置為中央倉庫的鏡像,任何對于中央倉庫的請求都會轉至該鏡像。
? ? ? ?<mirrorOf>*</mirrorOf>表示該配置是所有Maven倉庫的鏡像。
? ? ? ?<mirrorOf>external:*</mirrorOf>表示匹配所有遠程倉庫,使用localhost的除外,使用file://協(xié)議的除外。也就是說,匹配所有不在本機上的遠程倉庫。
? ? ? ?<mirrorOf>repo1,repo2</mirrorOf>表示匹配倉庫repo1和repo2,使用逗號分隔多個遠程倉庫。
? ? ? ?<mirrorOf>*,!repo1</miiroOf>表示匹配所有遠程倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。
? ? ? ?如果該鏡像倉庫需要認證,則配置一個Id為internal-repository的<server>即可。