1.概述
????不同的項(xiàng)目依賴的jar有可能一樣惜互。這時(shí)候?yàn)榱吮苊鈐ar重復(fù)下載的問(wèn)題甲葬,就產(chǎn)生倉(cāng)庫(kù)的概念撇寞。這個(gè)倉(cāng)庫(kù)只保證一個(gè)jar绍撞,以便供其他項(xiàng)目使用礁芦。
在Maven的conf目錄的settings.xml自定義倉(cāng)庫(kù)地址
<localRepository>/Java_Develop_Environment/Maven/repository</localRepository>
2.倉(cāng)庫(kù)布局
????Maven倉(cāng)庫(kù)的布局是根據(jù)其唯一的坐標(biāo)進(jìn)行對(duì)應(yīng)的蜻韭。
例如下面的坐標(biāo)在硬盤(pán)中的文件路徑地址
com/strivelearn/hello/1.0.0
3.倉(cāng)庫(kù)分類(lèi)
????Maven倉(cāng)庫(kù)分為兩類(lèi):1、本地倉(cāng)庫(kù) 2柿扣、遠(yuǎn)程倉(cāng)庫(kù)
????Maven根據(jù)坐標(biāo)尋找構(gòu)件的時(shí)候肖方,首先先查看本地倉(cāng)庫(kù),如果有未状,則直接使用俯画。如果沒(méi)有,則從遠(yuǎn)程倉(cāng)庫(kù)獲取司草。
????Maven還有一種特殊的遠(yuǎn)程倉(cāng)庫(kù):私服艰垂。為了節(jié)約帶寬和時(shí)間,則在局域網(wǎng)內(nèi)架設(shè)一個(gè)私有的倉(cāng)庫(kù)服務(wù)器埋虹。用其代理所有的外部遠(yuǎn)程倉(cāng)庫(kù)猜憎。國(guó)內(nèi)通常使用阿里云的私服。其中在maven中設(shè)置如下鏡像:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
4.本地倉(cāng)庫(kù)
????當(dāng)我們?cè)诰帉?xiě)自己項(xiàng)目的時(shí)候搔课,我們?cè)趫?zhí)行下面的命令胰柑,則就會(huì)把自己項(xiàng)目的jar包安裝到本地倉(cāng)庫(kù)。
mvn clean install
5.遠(yuǎn)程倉(cāng)庫(kù)
????遠(yuǎn)程倉(cāng)庫(kù)包含:1、中央倉(cāng)庫(kù) 2柬讨、私服 3崩瓤、其他公共庫(kù)。
????我們可以通過(guò)設(shè)置Maven的setting.xml來(lái)確認(rèn)遠(yuǎn)程倉(cāng)庫(kù)地址踩官,如上面在setting文件設(shè)置阿里云鏡像却桶。又可以在Maven里定義遠(yuǎn)程倉(cāng)庫(kù)地址。
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>
6.遠(yuǎn)程倉(cāng)庫(kù)的認(rèn)證
????大部分遠(yuǎn)程倉(cāng)庫(kù)無(wú)須認(rèn)證蔗牡,但是有時(shí)候出于安全方面的考慮肾扰,我們需要提供依認(rèn)證信息才能訪問(wèn)一些遠(yuǎn)程倉(cāng)庫(kù)。
????配置認(rèn)證信息和配置倉(cāng)庫(kù)信息不同蛋逾,倉(cāng)庫(kù)信息可以直接配置在POM文件中,但是認(rèn)證信息必須配置在settings.xml文件中窗悯。這是因?yàn)閜om文件往往被提交到代碼倉(cāng)庫(kù)中供所有成員訪問(wèn)区匣。而setting文件一般只放在本機(jī)。因此setting.xml文件中配置認(rèn)證信息比較安全蒋院。
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password></server>
</servers>
7.部署到遠(yuǎn)程倉(cāng)庫(kù)
????項(xiàng)目開(kāi)發(fā)完畢亏钩,都需要部署到倉(cāng)庫(kù)中,供其他團(tuán)隊(duì)使用欺旧。那么我們就需要將自己的項(xiàng)目包部署到遠(yuǎn)程倉(cāng)庫(kù)姑丑。
<distributionManagement>
<!--發(fā)布版本構(gòu)件的倉(cāng)庫(kù)-->
<repository>
<id>xxx</id>
<name>xxx</name>
<url>xxxx</url>
</repository>
<!--快照版本的倉(cāng)庫(kù)-->
<snapshotRepository>
<id>xxx</id>
<name>xxx</name>
<url>xxxx</url>
</snapshotRepository>
</distributionManagement>
????配置正確后,在命令行運(yùn)行:
mvn clean deploy
8.鏡像
????如果倉(cāng)庫(kù)X可以提供倉(cāng)庫(kù)Y存儲(chǔ)的所有內(nèi)容辞友,那么可以認(rèn)為X是Y的一個(gè)鏡像栅哀。也就是任意一個(gè)可以從倉(cāng)庫(kù)Y獲取的構(gòu)件,都能夠從它的鏡像中獲取称龙。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
9.倉(cāng)庫(kù)搜索服務(wù)
????再使用Maven進(jìn)行日常開(kāi)發(fā)的時(shí)候留拾,通常需要尋找需要的依賴。這時(shí)候可以用倉(cāng)庫(kù)搜索服務(wù)根據(jù)關(guān)鍵字得到Maven坐標(biāo)鲫尊。在國(guó)內(nèi)能正常打開(kāi)網(wǎng)址:http://mvnrepository.com/