讀古今文學網 > Maven實戰 > 9.3.1 Nexus內置的倉庫 >

9.3.1 Nexus內置的倉庫

在具體介紹每一種類型的倉庫之前,先瀏覽一下Nexus內置的一些倉庫。單擊Nexus界面左邊導航欄中的Repositories鏈接,就能在界面右邊看到如圖9-3所示的內容。

這個列表已經包含了所有類型的Nexus倉庫。從中可以看到倉庫有四種類型:group(倉庫組)、hosted(宿主)、proxy(代理)和virtual(虛擬)。每個倉庫的格式為maven2或者maven1。此外,倉庫還有一個屬性為Policy(策略),表示該倉庫為發佈(Release)版本倉庫還是快照(Snapshot)版本倉庫。最後兩列的值為倉庫的狀態和路徑。

下面解釋一下各個倉庫的用途。由於本書不涉及Maven 1的內容,maven1格式的倉庫會被省略。此外,由於虛擬類型倉庫的作用實際上是動態地將倉庫內容格式轉換,換言之也是為了服務maven1格式,因此也被省略。

圖9-3 Nexus內置的倉庫列表

·Maven Central:該倉庫代理Maven中央倉庫,其策略為Release,因此只會下載和緩存中央倉庫中的發佈版本構件。

·Releases:這是一個策略為Release的宿主類型倉庫,用來部署組織內部的發佈版本構件。

·Snapshots:這是一個策略為Snapshot的宿主類型倉庫,用來部署組織內部的快照版本構件。

·3rd party:這是一個策略為Release的宿主類型倉庫,用來部署無法從公共倉庫獲得的第三方發佈版本構件。

·Apache Snapshots:這是一個策略為Snapshot的代理倉庫,用來代理Apache Maven倉庫的快照版本構件。

·Codehaus Snapshots:這是一個策略為Snapshot的代理倉庫,用來代理Codehaus Maven倉庫的快照版本構件。

·Google Code:這是一個策略為Release的代理倉庫,用來代理Google Code Maven倉庫的發佈版本構件。

·java.net-Maven 2:這是一個策略為Release的代理倉庫,用來代理java.net Maven倉庫的發佈版本構件。

·Public Repositories:該倉庫組將上述所有策略為Release的倉庫聚合併通過一致的地址提供服務。

·Public Snapshot Repositories:該倉庫組將上述所有策略為Snapshot的倉庫聚合併通過一致的地址提供服務。

舉一個簡單的例子。假設某公司建立了Maven項目X,公司內部建立了Nexus私服,為所有Maven項目提供服務。項目X依賴於很多流行的開源類庫如JUnit等,這些構件都能從Maven中央倉庫獲得,因此Maven Central代理倉庫會被用來代理中央倉庫的內容,並在私服上緩存下來,X還依賴於某個Google Code的項目,其構件在中央倉庫中不存在,只存在於Google Code的倉庫中,因此上述列表中的Google Code代理倉庫會被用來代理並緩存這樣的構件。X還依賴於Oracle的JDBC驅動,由於版權的因素,該類庫無法從公共倉庫獲得,因此公司管理員將其部署到3rd party宿主倉庫中,供X使用。X的快照版本構件成功後,會被部署到Snapshots宿主倉庫中,供其他項目使用。當X發佈正式版本的時候,其構件會被部署到Release宿主倉庫中。由於X用到了上述列表中的很多倉庫,為每個倉庫聲明Maven配置又比較麻煩,因此可以直接使用倉庫組Public Repositories和Public Snapshot Repositories,當X需要JUnit的時候,它直接從Public Repositories下載,Public Repositories會選擇Maven Central提供實際的內容。