Maven4-倉(cāng)庫(kù)

坐標(biāo)和構(gòu)建是一個(gè)構(gòu)件在Maven世界中的邏輯表示方式,而其物理表示方式是文件。
Maven通過(guò)倉(cāng)庫(kù)來(lái)統(tǒng)一管理這些文件

什么是Maven倉(cāng)庫(kù)?

在Maven世界中,任何一個(gè)依賴(lài),插件或者項(xiàng)目構(gòu)建的輸出,都可以稱(chēng)為構(gòu)建,任何一個(gè)構(gòu)建都有一組坐標(biāo)唯一標(biāo)識(shí)。
得益于坐標(biāo)機(jī)制,任何Maven項(xiàng)目使用任何一個(gè)構(gòu)件的方式都是完全相同的,在此基礎(chǔ)上,Maven可以在某個(gè)位置統(tǒng)一存儲(chǔ)所有Maven項(xiàng)目共享的構(gòu)件,這個(gè)統(tǒng)一的位置就是倉(cāng)庫(kù).
這樣Maven項(xiàng)目就可以不再各自存儲(chǔ)其依賴(lài)文件,只需要聲明這些依賴(lài)的坐標(biāo),在需要的時(shí)候,Maven會(huì)自動(dòng)根據(jù)坐標(biāo)找到倉(cāng)庫(kù)中的構(gòu)件并使用。

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

對(duì)于Maven來(lái)說(shuō),倉(cāng)庫(kù)分為兩類(lèi):本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)
使用順序?yàn)?,先查找本地倉(cāng)庫(kù),若不存在或要尋找更高的版本,則到遠(yuǎn)程倉(cāng)庫(kù)中尋找到后,下載到本地倉(cāng)庫(kù)再使用,如果都沒(méi)有,則報(bào)錯(cuò)

本地倉(cāng)庫(kù)

一般情況下,在Maven項(xiàng)目目錄下,沒(méi)有諸如lib/這樣用來(lái)存放依賴(lài)文件的目錄。
當(dāng)Maven在執(zhí)行編譯或測(cè)試時(shí),如果需要使用依賴(lài)文件,它總是基于坐標(biāo)使用本地倉(cāng)庫(kù)的依賴(lài)文件
一般情況下,每個(gè)用戶(hù)在自己的用戶(hù)目錄下都有一個(gè)路徑名為.m2/repository/的倉(cāng)庫(kù)目錄

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

遠(yuǎn)程倉(cāng)庫(kù)有很多:

  • 中央倉(cāng)庫(kù):默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù),Maven的安裝文件自帶了中央倉(cāng)庫(kù)的配置,包含了這個(gè)世界上絕大多數(shù)流行的開(kāi)源Java構(gòu)件
  • 私服:一種特殊的遠(yuǎn)程倉(cāng)庫(kù),架設(shè)在局域網(wǎng)內(nèi)的倉(cāng)庫(kù)服務(wù),私服代理廣域網(wǎng)上的遠(yuǎn)程倉(cāng)庫(kù),供局域網(wǎng)內(nèi)的Maven用戶(hù)使用


    私服的用途

遠(yuǎn)程倉(cāng)庫(kù)的那些事

遠(yuǎn)程倉(cāng)庫(kù)的配置
<project>
...
     <repositories>
         <repository>
              <id>jboss</id>
              <name>JBoss Repository</name>
              <url>http://repository.jboss.com/maven2/</url>
              <releases>
                   <enabled>true</enabled>
              </releases>
              <snapshots>
                   <enabled>false</enabled>
                   <updatePolicy>daily</updatePolicy>
                   <checksumPolicy>ignore</checksumPolicy>
              </snapshots>
              <layout>default</layout>
         </repository>
     </repositories>
</project>
  • updatePolicy 用來(lái)配置Maven從遠(yuǎn)程倉(cāng)庫(kù)檢查更新的頻率
  • checksumPolicy 用來(lái)配置Maven檢查檢驗(yàn)和文件的策略

遠(yuǎn)程倉(cāng)庫(kù)的認(rèn)證

大部分遠(yuǎn)程倉(cāng)庫(kù)無(wú)須認(rèn)證就可以訪(fǎng)問(wèn),但有時(shí)處于安全方面的考慮,需要提供一些認(rèn)證信息才能訪(fǎng)問(wèn)一些遠(yuǎn)程倉(cāng)庫(kù)。
配置認(rèn)證信息應(yīng)該在settings.xml中,而不是POM中(因?yàn)閟ettings.xml一般只放在本機(jī)中)

<settings>
...
     <servers>
         <server>
             <id>my-proj</id>
              <username>repo-user</username>
              <password>repo-pwd</password>
         </server>
     </servers>
</settings>

這里的id需要和pom中的id相同

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

<project>
...
     <distributionManagement>
         <repository>
              <id>proj-release</id>
              <name>Proj Release Repository</name>
              <url>http://192.168.1.100/content/repositories/proj-releases</url>
          </repository>
          <snapshotRepository>
              <id>proj-snapshots</id>
              <name>Proj Snapshots Repository</name>
              <url>http://192.168.1.100/content/repositories/proj-snapshots</url>
           </snapshotRepository>
     </distributionManagement>
</project>

然后執(zhí)行mvn clean deploy,Maven將會(huì)將項(xiàng)目構(gòu)建輸出的構(gòu)建部署到配置對(duì)應(yīng)的遠(yuǎn)程倉(cāng)庫(kù)

快照版本

快照版本對(duì)應(yīng)了大量的帶有不同時(shí)間戳的構(gòu)建。
快照版本只應(yīng)該在組織內(nèi)部的項(xiàng)目或模塊間依賴(lài)使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(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,453評(píng)論 0 25
  • 簡(jiǎn)介 概述 Maven 是一個(gè)項(xiàng)目管理和整合工具 Maven 為開(kāi)發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,521評(píng)論 6 39
  • 目前在看nexus私服章節(jié)的知識(shí)時(shí)需要用到倉(cāng)庫(kù)與鏡像的知識(shí),正好通過(guò)簡(jiǎn)書(shū)把倉(cāng)庫(kù)和鏡像章節(jié)的筆記整理一下 倉(cāng)庫(kù) ma...
    小煉君閱讀 1,410評(píng)論 0 48
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • 上一篇介紹接口使用https并且證書(shū)是自簽的情況下,如何在客戶(hù)端信任服務(wù)器證書(shū),沒(méi)有看過(guò)的請(qǐng)移步 Https自定義...
    tmyzh閱讀 2,908評(píng)論 0 1

友情鏈接更多精彩內(nèi)容