0向挖、Maven介紹
? ? ? ?Maven是一個(gè)項(xiàng)目管理工具列荔。Maven提供了開發(fā)人員構(gòu)建一個(gè)完整的生命周期框架。開發(fā)團(tuán)隊(duì)可以自動(dòng)完成項(xiàng)目的基礎(chǔ)工具建設(shè),Maven使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu)和默認(rèn)構(gòu)建生命周期鳄厌。
? ? ? ?在多個(gè)開發(fā)團(tuán)隊(duì)環(huán)境時(shí),Maven可以設(shè)置按標(biāo)準(zhǔn)在非常短的時(shí)間里完成配置工作惠窄。由于大部分項(xiàng)目的設(shè)置都很簡(jiǎn)單谅辣,并且可重復(fù)使用,Maven讓開發(fā)人員的工作更輕松前翎,同時(shí)創(chuàng)建報(bào)表稚配,檢查,構(gòu)建和測(cè)試自動(dòng)化設(shè)置港华。
1道川、Maven安裝
? ? ? ?要使用Maven前要先在電腦上安裝Maven
? ? ? ?1. 下載地址:Maven
? ? ? ?2. 設(shè)置環(huán)境變量M2_HOME、MAVEN_HOME和PATH
? ? ? ?3. 檢驗(yàn)Maven有沒有安詳成功立宜,在命令行中輸入mvn -version
2冒萄、在IntelliJ IDEA配置Maven
? ? ? ?在IDEA的file/settings中選擇如下界面:
? ? ? ?將Maven home directory中的目錄改為步驟一中Maven壓縮包解壓縮的主目錄。User settings file和Local repository是工程自動(dòng)配置的橙数。
3尊流、新建Maven工程
? ? ? ?一路Next,不需要進(jìn)行額外的設(shè)置灯帮,最后出現(xiàn)這個(gè)頁(yè)面:
? ? ? ?需要注意的是崖技,這里的groupId逻住、artifactId和version指的是我們自建的項(xiàng)目的坐標(biāo)值,而不是要添加的依賴關(guān)系的坐標(biāo)值迎献。
4瞎访、修改pom.xml
5、修改本地倉(cāng)庫(kù)
? ? ? ?Maven會(huì)將工程中依賴的構(gòu)件(Jar包)從遠(yuǎn)程下載到本機(jī)一個(gè)目錄下管理吁恍,每個(gè)電腦默認(rèn)的倉(cāng)庫(kù)是在 $user.home/.m2/repository下扒秸。修改本地庫(kù)位置:在$MAVEN_HOME/conf/setting.xml文件中修改。
? ? ? ?修改完settings.xml配置文件后冀瓦,需要手動(dòng)在IDEA中更新xml文件鸦采。
? ? ? ?設(shè)置好本地倉(cāng)庫(kù)后,從網(wǎng)上下載的所有jar包咕幻,都被丟到該目錄下渔伯,我們可以直接通過(guò)maven的pom.xml配置文件從本地倉(cāng)庫(kù)中直接獲取已經(jīng)下載好的jar包。
? ? ? ?當(dāng)工程需要某個(gè)jar包時(shí)肄程,其搜索順序如下:工程會(huì)優(yōu)先從本地倉(cāng)庫(kù)中搜索jar包锣吼。如果本地倉(cāng)庫(kù)中沒有jar包,配置了私服的話蓝厌,就從私服中查找玄叠;私服中沒有,就會(huì)從互聯(lián)網(wǎng)中的中央倉(cāng)庫(kù)中獲取拓提,然后下載到我們的本地倉(cāng)庫(kù)中读恃,同時(shí)緩存在私服之上,下次再使用該jar包代态,就會(huì)直接從本地倉(cāng)庫(kù)中拿人卤埂(私服是一種特殊的遠(yuǎn)程Maven倉(cāng)庫(kù),它是架設(shè)在局域網(wǎng)內(nèi)的倉(cāng)庫(kù)服務(wù)蹦疑,私服一般被配置為互聯(lián)網(wǎng)遠(yuǎn)程倉(cāng)庫(kù)的鏡像西雀,供局域網(wǎng)內(nèi)的Maven用戶使用。私服可以使用局域網(wǎng)歉摧,但是中央倉(cāng)庫(kù)必須使用外網(wǎng))艇肴。另外,對(duì)于自定義或第三方的jar可以從本地上傳到私服叁温,供局域網(wǎng)內(nèi)其他maven用戶使用再悼。
6、如何獲取Maven坐標(biāo)
1膝但、登陸網(wǎng)頁(yè):maven repository
2冲九、搜索關(guān)鍵字
3、獲取坐標(biāo)
7锰镀、修改鏡像
? ? ? ?mirror相當(dāng)于一個(gè)攔截器娘侍,它會(huì)攔截maven對(duì)remote repository的相關(guān)請(qǐng)求咖刃,把請(qǐng)求里的remote repository地址泳炉,重定向到mirror里配置的地址憾筏。mirror表示的是兩個(gè)Repository之間的關(guān)系,在maven配置文件(setting.xml)里配置 了<mirrors><mirror>..........</mirror></mirrors>花鹅, 即定義了兩個(gè)Repository之間的鏡像關(guān)系氧腰。設(shè)置鏡像一般是為了加快訪問(wèn)速度和下載速度,通過(guò)修改mirror刨肃,將對(duì)中央庫(kù)或者第三方庫(kù)的請(qǐng)求古拴,都重新定向到某指定的鏡像倉(cāng)庫(kù),從該鏡像倉(cāng)庫(kù)來(lái)下載jar包真友。
? ? ? ?上圖中黄痪,B Repository被稱為A Repository的鏡像。如果倉(cāng)庫(kù)X可以提供倉(cāng)庫(kù)Y存儲(chǔ)的所有內(nèi)容盔然,那么就可以認(rèn)為X是Y的一個(gè)鏡像桅打。換句話說(shuō),任何一個(gè)可以從倉(cāng)庫(kù)Y獲得的構(gòu)件愈案,都能夠從它的鏡像中獲取挺尾。
? ? ? ?我自己修改的mirror配置如下,將zte內(nèi)部私服設(shè)置為所有遠(yuǎn)端庫(kù)的鏡像:
? ? ? ?這里需要注意下幾個(gè)字段的意思:
? ? ? ?id,name,url與一般倉(cāng)庫(kù)配置無(wú)異站绪,表示該鏡像倉(cāng)庫(kù)的唯一標(biāo)識(shí)符遭铺、名稱以及地址。類似地恢准,如果該鏡像需認(rèn)證魂挂,也可以基于該id配置倉(cāng)庫(kù)認(rèn)證。
? ? ? ?<mirrorOf></mirrorOf>標(biāo)簽里面放置的是要被鏡像的Repository ID馁筐。其有如下幾種常見的配置:
? ? ? ?<mirrorOf>central</mirrorOf>表示該配置為中央倉(cāng)庫(kù)的鏡像锰蓬,任何對(duì)于中央倉(cāng)庫(kù)的請(qǐng)求都會(huì)轉(zhuǎn)至該鏡像。
? ? ? ?<mirrorOf>*</mirrorOf>表示該配置是所有Maven倉(cāng)庫(kù)的鏡像眯漩。
? ? ? ?<mirrorOf>external:*</mirrorOf>表示匹配所有遠(yuǎn)程倉(cāng)庫(kù)芹扭,使用localhost的除外,使用file://協(xié)議的除外赦抖。也就是說(shuō)舱卡,匹配所有不在本機(jī)上的遠(yuǎn)程倉(cāng)庫(kù)。
? ? ? ?<mirrorOf>repo1,repo2</mirrorOf>表示匹配倉(cāng)庫(kù)repo1和repo2队萤,使用逗號(hào)分隔多個(gè)遠(yuǎn)程倉(cāng)庫(kù)轮锥。
? ? ? ?<mirrorOf>*,!repo1</miiroOf>表示匹配所有遠(yuǎn)程倉(cāng)庫(kù),repo1除外要尔,使用感嘆號(hào)將倉(cāng)庫(kù)從匹配中排除舍杜。
? ? ? ?如果該鏡像倉(cāng)庫(kù)需要認(rèn)證新娜,則配置一個(gè)Id為internal-repository的<server>即可。