Nexus 作為一款 Maven 倉庫管理器,倉庫(Repository)自然是 Nexus 最核心的概念。Nexus 中提供了許多倉庫概念,如代理倉庫、宿主倉庫以及倉庫組等。Nexus 為每一種倉庫都提供了豐富的配置參數,方便我們根據自身需要進行定制。
點擊左邊導航欄中的 Repositories,可以看到 Nexus 自帶的幾個內置倉庫,如下圖所示。
在倉庫列表中,每個倉庫都具有一系列屬性:
Type:倉庫的類型,Nexus 中有 4 中倉庫類型:group(倉庫組)、hosted(宿主倉庫)、proxy(代理倉庫)以及 virtual(虛擬倉庫)。
Format:倉庫的格式。
Policy:倉庫的策略,表示該倉庫是發(fā)布(Release)版本倉庫還是快照(Snapshot)版本倉庫。
Repository Status:倉庫的狀態(tài)。
Repository Path:倉庫的路徑。
由圖 1 可知,Nexus 2.x 默認創(chuàng)建了 6 個倉庫,我們稱它們?yōu)?Nexus 內置倉庫。
Maven Central:該倉庫用來代理 Maven 中央倉庫,其策略為 Release,只會下載和緩存中央倉庫中的發(fā)布版本的構件。
Releases:策略為 Release 的宿主倉庫,用來部署公司或組織內部的發(fā)布版本構件。
Snapshots:策略為 Snapshot 的宿主倉庫,用來部署公司或組織內部的快照版本構件。
3rd party:策略為 Release 的宿主倉庫,用來部署第三方發(fā)布版本構件,這些構件一般無法從任何遠程倉庫中獲得。
Public Repositories:該倉庫組將上述所有存儲策略為 Release 的倉庫聚合并通過統一的地址提供服務。
Nexus 倉庫按照類型(Type)區(qū)分,主要分為以下 3 個類型:
代理倉庫(proxy):用來代理遠程公共倉庫,如 Maven 中央倉庫、JBoss 遠程倉庫。
宿主倉庫(hosted):又稱 Nexus 本地倉庫,該倉庫通常用來部署本地項目所產生的構件。
倉庫組(group):用來聚合代理倉庫和宿主倉庫,為這些倉庫提供統一的服務地址,以便 Maven 可以更加方便地獲得這些倉庫中的構件。
為了更加直觀的理解倉庫組、代理倉庫和宿主倉庫的概念,我們通過下圖展示它們的用途和區(qū)別。
由上圖可知:
Maven 可以直接從宿主倉庫中下載構件。
Maven 也可以從代理倉庫中下載構件,代理倉庫會從遠程倉庫下載并緩存構件。
Maven 還可以從倉庫組中下載構件,倉庫組會從其包含的宿主倉庫和代理倉庫中獲取構件。