Maven實(shí)戰(zhàn)之Maven倉(cāng)庫(kù)

Maven實(shí)戰(zhàn)之Maven倉(cāng)庫(kù)

Maven倉(cāng)庫(kù)作用

倉(cāng)庫(kù),顧名思義就是存放物品的地方蜗字。在Maven中仇参,我們可以將其倉(cāng)庫(kù)理解為就是存放jar包的地方,在前面的小節(jié)中嫩絮,我們提到了Maven的中央倉(cāng)庫(kù)丛肢,該倉(cāng)庫(kù)是Maven的默認(rèn)倉(cāng)庫(kù),基本上包含了常見(jiàn)的Java開(kāi)源庫(kù)的jar包及其相關(guān)信息剿干。

倉(cāng)庫(kù)的路徑

在前面的小節(jié)中蜂怎,當(dāng)需要使用一個(gè)依賴(lài)的時(shí)候,Maven要求我們必須提供其對(duì)應(yīng)的坐標(biāo) ( groupId置尔,ArtifactId杠步,version 等信息 ),該信息除了區(qū)分不同的依賴(lài)外,很重要的一個(gè)作用就是標(biāo)識(shí)自己在倉(cāng)庫(kù)中對(duì)應(yīng)的存放位置幽歼,Maven中倉(cāng)庫(kù)的默認(rèn)存放路徑為 GroupId/ArtifactId/version/ArtifactId-version-[classifier].extension朵锣,比如spring-core,它的坐標(biāo)為

<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.7.RELEASE</version>

則其對(duì)應(yīng)的路徑為org.springframework/spring-core/4.3.7/spring-core.4.3.7.RELEASE.jar甸私,其中的extension來(lái)自于package中的聲明诚些,默認(rèn)為jar

倉(cāng)庫(kù)的類(lèi)型

在Maven中,只有兩種類(lèi)型的倉(cāng)庫(kù):本地倉(cāng)庫(kù)皇型、遠(yuǎn)程倉(cāng)庫(kù)诬烹,如果進(jìn)行細(xì)分的話(huà),遠(yuǎn)程倉(cāng)庫(kù)還可以進(jìn)一步劃分為:中央倉(cāng)庫(kù)弃鸦、私服绞吁、其他公共庫(kù)。本地倉(cāng)庫(kù)以及中央倉(cāng)庫(kù)唬格、其他公共倉(cāng)庫(kù)的概念顯而易見(jiàn)家破,私服指的是一般公司自己搭建的內(nèi)部的倉(cāng)庫(kù),不對(duì)外開(kāi)放购岗,同時(shí)該倉(cāng)庫(kù)可以作為公司內(nèi)部的公共倉(cāng)庫(kù)汰聋,并且只由該私服倉(cāng)庫(kù)訪問(wèn)其他倉(cāng)庫(kù),這樣做可以減少公司的對(duì)外帶寬藕畔,提高效率马僻,同時(shí)減少對(duì)其他倉(cāng)庫(kù)的訪問(wèn)。

配置遠(yuǎn)程倉(cāng)庫(kù)

當(dāng)Maven在構(gòu)建的時(shí)候注服,發(fā)現(xiàn)本地倉(cāng)庫(kù)缺少相對(duì)應(yīng)的構(gòu)建的時(shí)候韭邓,就會(huì)從遠(yuǎn)程倉(cāng)庫(kù)中查詢(xún)、獲取該構(gòu)建溶弟,由于默認(rèn)是中央倉(cāng)庫(kù)女淑,而有時(shí)候中央倉(cāng)庫(kù)可能出現(xiàn)網(wǎng)絡(luò)問(wèn)題或者我們需要的構(gòu)建不在中央倉(cāng)庫(kù)中,這個(gè)時(shí)候配置其他遠(yuǎn)程倉(cāng)庫(kù)就很有必要了辜御,配置方式如下:配置pom.xml

<project>
    ...
    <repositories><!--可以配置多個(gè)遠(yuǎn)程倉(cāng)庫(kù)-->
        <repository><!--配置一個(gè)倉(cāng)庫(kù)-->
            <id>倉(cāng)庫(kù)的ID</id><!--ID沒(méi)有其他要求鸭你,但該ID在本文件中應(yīng)該唯一-->
            <name>倉(cāng)庫(kù)的名字</name><!--用于開(kāi)發(fā)人員識(shí)別--->
            <url>倉(cāng)庫(kù)的地址</url><!--該地址很重要,是倉(cāng)庫(kù)唯一的地址-->
            <snapshots><enable>false</enable></snapshots><!--不使用snapshot狀態(tài)的構(gòu)建-->
            <releases><enable>true</enable></releases><!--使用release狀態(tài)的構(gòu)建-->
        </repository>
   </repositories>
</project>

配置倉(cāng)庫(kù)認(rèn)證信息

有時(shí)候擒权,有些遠(yuǎn)程倉(cāng)庫(kù)需要進(jìn)行身份驗(yàn)證袱巨,有時(shí)這是很有必要的,如在公司內(nèi)部碳抄,可能有些倉(cāng)庫(kù)只允許特定的人員訪問(wèn)愉老,配置方式如下

注意,這里的配置是在setting.xml文件中配置剖效,原因很顯然嫉入,pom.xml會(huì)隨著構(gòu)建的發(fā)布提交給其他用戶(hù)焰盗,這是比較危險(xiǎn)的做法

<setting>
    ...
    <servers>
        <server>
        <!--這里的ID要與需要身份認(rèn)證的倉(cāng)庫(kù)中的ID保持一致,這也是為什么倉(cāng)庫(kù)中ID需要保持唯一的原因之一-->
            <id>倉(cāng)庫(kù)的ID</id>
            <username>用戶(hù)名</username>
            <password>密碼</password>
        </server>
    </servers>
</setting>

部署至遠(yuǎn)程倉(cāng)庫(kù)

有時(shí)候我們可能需要將構(gòu)建好的構(gòu)建部署到遠(yuǎn)程倉(cāng)庫(kù)中咒林,供其他開(kāi)發(fā)人員使用熬拒,配置的方式如下,pom.xml

<project>
    ...
    <distributionManagement>
        <repository>
        <!--ID唯一垫竞,一般來(lái)說(shuō)需要部署的倉(cāng)庫(kù)都需要驗(yàn)證身份澎粟,所以還需要配置認(rèn)證,方式見(jiàn)上面-->
            <id>要部署的倉(cāng)庫(kù)的ID</id>
            <name>倉(cāng)庫(kù)的名稱(chēng)</name>
            <url>倉(cāng)庫(kù)的地址</url>
        </repository>
    </distributionManagement>
</project>

當(dāng)代碼編寫(xiě)完成件甥,通過(guò)測(cè)試之后捌议,執(zhí)行命令mvn clean deploy就可以將其部署到對(duì)應(yīng)的倉(cāng)庫(kù)中,供其他開(kāi)發(fā)者使用引有。

關(guān)于快照版本

需要存在的原因如下

  • 告知其他使用該構(gòu)建的開(kāi)發(fā)者,該構(gòu)建屬于測(cè)試版倦逐,不建議在實(shí)際生產(chǎn)中使用

  • 方便Maven進(jìn)行歸類(lèi)管理譬正,方便用戶(hù)構(gòu)建時(shí)進(jìn)行選擇

倉(cāng)庫(kù)解析依賴(lài)機(jī)制

在Maven中,依賴(lài)的解析方式如下:首先是檢查本地倉(cāng)庫(kù)是否存在檬姥、存在則使用曾我,不存在,則向默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù)或者私服查詢(xún)健民,如果有多個(gè)的話(huà)抒巢,先合并所有的遠(yuǎn)程倉(cāng)庫(kù)元信息 groupId/artifactId/maven-metadata.xml文件,然后選擇最合適的構(gòu)建秉犹,然后進(jìn)行解析蛉谜。

鏡像

鏡像,顧名思義崇堵,就是原來(lái)東西的一個(gè)復(fù)制型诚,Maven倉(cāng)庫(kù)的鏡像也是如此,如果一個(gè)倉(cāng)庫(kù)A是另一個(gè)倉(cāng)庫(kù)B的拷貝鸳劳,則稱(chēng)倉(cāng)庫(kù)A是倉(cāng)庫(kù)B的鏡像狰贯。鏡像倉(cāng)庫(kù)的可以用于減緩目標(biāo)倉(cāng)庫(kù)的壓力,同時(shí)赏廓,也可以用于修改默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù)涵紊,配置方式如下setting.xml

<setting>
    ...
    <mirrors><!--配置多個(gè)鏡像倉(cāng)庫(kù)-->
        <mirror><!--配置一個(gè)鏡像倉(cāng)庫(kù)-->
            <id>倉(cāng)庫(kù)ID</id>
            <name>倉(cāng)庫(kù)名稱(chēng)</name>
            <url>鏡像倉(cāng)庫(kù)地址</url>
          <!--表示鏡像倉(cāng)庫(kù)為原倉(cāng)庫(kù)的鏡像,之后原倉(cāng)庫(kù)的訪問(wèn)會(huì)直接訪問(wèn)鏡像倉(cāng)庫(kù)-->
            <mirrorof>原倉(cāng)庫(kù)地址</mirrorof>
          <!--可以使用*表示所有幔摸,則所有的訪問(wèn)都會(huì)指向鏡像倉(cāng)庫(kù)-->
        </mirror>
    </mirrors>
</setting>

倉(cāng)庫(kù)搜索服務(wù)

有時(shí)候我們只知道某一個(gè)構(gòu)建的名稱(chēng)或是組織等一些不足以表示該構(gòu)建坐標(biāo)的信息摸柄,這個(gè)時(shí)候有兩種主要的解決方案

  1. 第一種是通過(guò)搜索引擎查找或者訪問(wèn)該構(gòu)建的官網(wǎng)

  2. 第二種是通過(guò)已有的倉(cāng)庫(kù)搜索服務(wù),有幾個(gè)比較常用的倉(cāng)庫(kù)搜索服務(wù)網(wǎng)站抚太,如下

總結(jié)

在這一小節(jié)中塘幅,我們主要了解了Maven中倉(cāng)庫(kù)的概念昔案,倉(cāng)庫(kù)的種類(lèi),配置遠(yuǎn)程倉(cāng)庫(kù)电媳,配置倉(cāng)庫(kù)認(rèn)證信息踏揣,部署構(gòu)建到遠(yuǎn)程倉(cāng)庫(kù)中,倉(cāng)庫(kù)依賴(lài)解析機(jī)制匾乓,鏡像倉(cāng)庫(kù)捞稿,以及幾個(gè)常用的倉(cāng)庫(kù)搜索服務(wù),Maven的學(xué)習(xí)之路還在繼續(xù)拼缝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娱局,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咧七,更是在濱河造成了極大的恐慌衰齐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件继阻,死亡現(xiàn)場(chǎng)離奇詭異耻涛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瘟檩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)抹缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人墨辛,你說(shuō)我怎么就攤上這事卓研。” “怎么了睹簇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵奏赘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我带膀,道長(zhǎng)志珍,這世上最難降的妖魔是什么垛叨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮嗽元,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剂癌。我一直安慰自己,他們只是感情好佩谷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布监嗜。 她就那樣靜靜地躺著,像睡著了一般抡谐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麦撵,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音免胃,去河邊找鬼。 笑死羔沙,一個(gè)胖子當(dāng)著我的面吹牛躺涝,可吹牛的內(nèi)容都是我干的撬碟。 我是一名探鬼主播诞挨,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呢蛤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起棍郎,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤其障,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后涂佃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體励翼,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年辜荠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汽抚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伯病,死狀恐怖造烁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情午笛,我是刑警寧澤惭蟋,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站药磺,受9級(jí)特大地震影響告组,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜癌佩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一木缝、第九天 我趴在偏房一處隱蔽的房頂上張望便锨。 院中可真熱鬧,春花似錦我碟、人聲如沸放案。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卿叽。三九已至,卻和暖如春恳守,著一層夾襖步出監(jiān)牢的瞬間考婴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工催烘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沥阱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓伊群,卻偏偏與公主長(zhǎng)得像考杉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舰始,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • |-1-更新內(nèi)容[6.從倉(cāng)庫(kù)解析依賴(lài)的機(jī)制(重要)] 1Maven倉(cāng)庫(kù)作用 倉(cāng)庫(kù)用來(lái)存儲(chǔ)所有項(xiàng)目使用到構(gòu)件崇棠,在ma...
    zlcook閱讀 6,059評(píng)論 0 25
  • 目前在看nexus私服章節(jié)的知識(shí)時(shí)需要用到倉(cāng)庫(kù)與鏡像的知識(shí)枕稀,正好通過(guò)簡(jiǎn)書(shū)把倉(cāng)庫(kù)和鏡像章節(jié)的筆記整理一下 倉(cāng)庫(kù) ma...
    小煉君閱讀 1,288評(píng)論 0 48
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)谜嫉,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 首先私服是一種衍生出來(lái)的特殊的Maven遠(yuǎn)程倉(cāng)庫(kù)哆档,構(gòu)建私服的好處請(qǐng)看3.5私服 可以幫助大家建立私服的倉(cāng)庫(kù)管理軟件...
    zlcook閱讀 10,549評(píng)論 0 32
  • 一一一海洋 ? 2009年對(duì)我來(lái)說(shuō)是一個(gè)人生的轉(zhuǎn)折點(diǎn),那時(shí)...
    帝王道閱讀 468評(píng)論 0 0