Nexus學習筆記--安裝使用教程


Nexus是什么

Nexus 是 Sonatype 公司發布的一款倉庫(Repository)管理軟件,常用來搭建 Maven 私服,所以也有人將 Nexus 稱為“Maven倉庫管理器”。

Maven 私服其實並不是 Maven 的核心概念,它僅僅是一種衍生出來的特殊的倉庫,但這並不代表它不重要,相反由於私服具有降低中央倉庫負荷、節省外網帶寬、以及提高項目穩定性等優點,使得私服在實際開發過程中得到了相當普遍地使用。

能夠幫助我們建立私服的軟件被稱為 Maven 倉庫管理器,主要有以下 3 種:

  • Apache Archiva
  • JFrog Artifactory
  • Sonatype Nexus

其中,Sonatype Nexus 是當前最流行,使用最廣泛的 Maven 倉庫管理器。Nexus 分為開源版和專業版,其中開源版足以滿足大部分 Maven 用戶的需求。

Nexus 開源版具有以下特性:

  • 占用內存小(28 M 左右)
  • 具有基於 ExtJs 得操作界面,用戶體驗較好
  • 使用基於 Restlet 的完全 REST API
  • 支持代理倉庫、宿主倉庫和倉庫組
  • 基於文件系統,不需要依賴數據庫
  • 支持倉庫索引以及搜索
  • 支持在界面上上傳構件
  • 安全控制

Nexus 專業版需要付費購買,它主要包含一些企業級的高級特性,詳情請參考 Sonatype Nexus 官方文檔

Nexus下載和安裝

目前 Nexus 分為 Nexus 2.x 和 Nexus 3.x 兩個大版本,它們是並行的關系,目前使用最多,運行最穩定的是 Nexus 2.x,下面我們以 Nexus 2.x 為例,演示 Nexus 的安裝過程。

1.  進入 Nexus 2.x 下載頁面,根據本機操作系統,選擇對應的版本進行下載,如下圖所示。

 圖1:Nexus 2.x 下載頁面

2. 將下載 Nexus 安裝包解壓到本地磁盤,可獲得 nexus-2.14.20-02 和 sonatype-work 2 個目錄,如下圖。

圖2:Nexus 2.x 目錄

其中:

  • nexus-2.14.20-02:該目錄中包含了 Nexus 2.x 運行所需要的文件,如啟動腳本、依賴 jar 包等。
  • sonatype-work:該目錄中包含了 Nexus 2.x 生成的配置文件、日志文件等。

3. nexus-2.14.20-02 中包含以下目錄及文件。

圖3:nexus-2.14.20-02 目錄及文件列表

nexus-2.14.20-02 目錄說明,如下表所示。

子目錄 說明
bin 命令中心(啟動命令,關閉命令)
conf 配置中心(管理着倉庫列表、日志配置,以及安全設置)
lib Nexus 的庫文件,Nexus 運行時需要的 jar 包所在的目錄
logs 存放日志文件
nexus Nexus 應用程序
tmp 存放Nexus 運行時產生的臨時文件


4. .進入 \nexus-2.14.20-02\bin\jsw 文件夾,根須操作系統版本選擇合適的目錄,由於我的操作系統是 Windows 10 64 位,所以我選擇 windows-x86-64 目錄,如下圖所示。

圖4:nexus-2.14.20-02\bin\jsw 目錄列表

5. 進入 windows-x86-64 目錄后可以看到如下文件。

圖5:Nexus 啟動文件列表

其中:

  • console-nexus.bat:啟動 Nexus 並在 DOS 命令行中展示啟動過程。
  • install-nexus.bat:將 Nexus 安裝為 Windows 服務,開機自動啟動。
  • start-nexus.bat:啟動 Nexus。
  • stops-nexus.bat:停止 Nexus。
  • uninstall-nexus.bat:與 install-nexus.bat 相對應,負責卸載 Nexus 服務。

6. 雙擊運行 install-nexus.bat 安裝 Nexus 服務,然后運行 start-nexus.bat 啟動服務。

注意:

  • 運行 install-nexus.bat 安裝服務,若提示”wrapper  | OpenSCManager failed - 拒絕訪問。 (0x5)“,只要關閉窗口,以管理員身份運行即可解決。
  • 運行 start-nexus.bat 啟動服務,若提示”wrapper  | OpenSCManager failed - 拒絕訪問。 (0x5)“,只要關閉窗口,以管理員身份運行即可解決。

7. 訪問 http://localhost:8081/nexus,結果如下圖,則表示服務啟動成功,否則表示服務啟動失敗。

圖6:Nexus 首頁

8. 點擊首頁右上角的“Log In”按鈕,在登錄頁面輸入用戶名和密碼(默認分別為:admin 和 admin123 ),最后點擊“Log In”按鈕登錄。

圖7:Nexus 登錄界面

9. 登錄成功后,結果如下圖。

圖8:Nexus 登錄成功

Nexus倉庫屬性和分類

Nexus 作為一款 Maven 倉庫管理器,倉庫(Repository)自然是 Nexus 最核心的概念。Nexus 中提供了許多倉庫概念,如代理倉庫、宿主倉庫以及倉庫組等。Nexus 為每一種倉庫都提供了豐富的配置參數,方便我們根據自身需要進行定制。

Nexus 倉庫屬性

點擊左邊導航欄中的 Repositories,可以看到 Nexus 自帶的幾個內置倉庫,如下圖所示。

圖1:Nexus 內置倉庫列表

在倉庫列表中,每個倉庫都具有一系列屬性:

  • Type:倉庫的類型,Nexus 中有 4 中倉庫類型:group(倉庫組)、hosted(宿主倉庫)、proxy(代理倉庫)以及 virtual(虛擬倉庫)
  • Format:倉庫的格式。
  • Policy:倉庫的策略,表示該倉庫是發布(Release)版本倉庫還是快照(Snapshot)版本倉庫
  • Repository Status:倉庫的狀態。
  • Repository Path:倉庫的路徑。


由圖 1 可知,Nexus 2.x  默認創建了 6 個倉庫,我們稱它們為 Nexus 內置倉庫。

  • Maven Central:該倉庫用來代理 Maven 中央倉庫,其策略為 Release,只會下載和緩存中央倉庫中的發布版本的構件。
  • Releases:策略為 Release 的宿主倉庫,用來部署公司或組織內部的發布版本構件。
  • Snapshots:策略為 Snapshot 的宿主倉庫,用來部署公司或組織內部的快照版本構件。
  • 3rd party:策略為 Release 的宿主倉庫,用來部署第三方發布版本構件,這些構件一般無法從任何遠程倉庫中獲得。
  • Public Repositories:該倉庫組將上述所有存儲策略為 Release 的倉庫聚合並通過統一的地址提供服務。

Nexus 倉庫分類

Nexus 倉庫按照類型(Type)區分,主要分為以下 3 個類型:

  • 代理倉庫(proxy):用來代理遠程公共倉庫,如 Maven 中央倉庫、JBoss 遠程倉庫。
  • 宿主倉庫(hosted):又稱 Nexus 本地倉庫,該倉庫通常用來部署本地項目所產生的構件。
  • 倉庫組(group):用來聚合代理倉庫和宿主倉庫,為這些倉庫提供統一的服務地址,以便 Maven 可以更加方便地獲得這些倉庫中的構件。

為了更加直觀的理解倉庫組、代理倉庫和宿主倉庫的概念,我們通過下圖展示它們的用途和區別。

 由上圖可知:

  • Maven 可以直接從宿主倉庫中下載構件。
  • Maven 也可以從代理倉庫中下載構件,代理倉庫會從遠程倉庫下載並緩存構件。
  • Maven 還可以從倉庫組中下載構件,倉庫組會從其包含的宿主倉庫和代理倉庫中獲取構件。

本節,我們將介紹如何創建自定義宿主倉庫、代理倉庫和倉庫組,為后面的工作做准備。

創建 Nexus 宿主倉庫

首先,我們需要創建兩個宿主倉庫,分別用來存儲從本地上傳到 Nexus 的 Snapshot 和 Release 版本的構件,操作步驟如下。

1. 點擊左邊導航欄中的 Repositories,如下圖。

圖1:Nexus 導航

2. 點擊 Nexus 倉庫列表上方的 Add... 按鈕,在下拉菜單中選擇 Hosted Repository,如下圖。

圖2:添加宿主倉庫

3. 在宿主倉庫配置界面,填寫對應信息,然后點擊 Save 按鈕進行保存,如下圖。

圖3:配置宿主倉庫

宿主倉庫配置如下:

配置 說明
Repository ID 倉庫 ID。
Repository Name 倉庫名稱。
Repository Type 倉庫的類型,如 hosted、proxy 等等。
Provider 用來確定倉庫的格式,一般默認選擇 Maven2。
Repository Policy 倉庫的策略。
Default Local Storage Location 倉庫默認存儲目錄,例如 D:\nexus-2.14.20-02-bundle\sonatype-work\nexus\indexer\bianchengbang_Snapshot_hosted_ctx。
Override Local Storage Location 自定義倉庫存儲目錄。
Deployment Policy 倉庫的部署策略。
Allow File Browsing 用來控制是否允許瀏覽倉庫內容,一般選擇 true
Include in Search 用來控制該倉庫是否創建索引並提供搜索功能。
Publish URL 用來控制是否通過 URL 提供服務。
Not Found Cache TTL 緩存某構件不存在信息的時間,默認取值為 1440,表示若某一個構件在倉庫中沒有找到,在 1440 分鍾內再次接收到該構件的請求,則直接返回不存在信息,不會再次查找。


4. 查看 Nexus 倉庫列表,可以看到自定義的宿主倉庫已經創建完成,如下圖。

圖4:Nexus 倉庫列表

重復以上步驟,再創建一個名稱為 bianchengbang_Release_hosted ,策略為 hosted 的宿主倉庫。

圖5:Nexus 倉庫列表-宿主倉庫

創建 Nexus 代理倉庫

下面我們創建一個代理倉庫,用來下載和緩存中央倉庫的構件,操作步驟如下。

點擊 Nexus 倉庫列表上方的 Add... 按鈕,在下拉菜單中選擇 Proxy Repository,如圖 5 所示。

圖5:添加代理倉庫

在代理倉庫配置界面,填寫對應信息,然后點擊 Save 按鈕進行保存,如圖 6 所示。

 代理倉庫配置中,倉庫 ID、倉庫名稱、Provider、Policy 以及 Default Local Storage Location 等配置的含義與宿主倉庫相同,不再贅述。需要注意的是,代理倉庫的 Repository Type 的取值是 proxy

代理倉庫配置如下表。

配置 說明
Remote Storage Location 遠程倉庫或中央倉庫的地址,它是 Nexus 代理倉庫最重要得配置,必須輸入有效值,通常取值為 https://repo1.maven.org/maven2/。
Download Remote Indexes 是否下載遠程倉庫的索引。
Auto Blocking Enabled 是否啟用自動阻止,即當 Nexus 無法連接中央倉庫或遠程倉庫時,是否一直等待。取值為 true 表示不再等待,直接通知客戶端無法連接,並返回。
File Content Validation 是否啟用文件內容校驗。
Checksum Policy 配置校驗和出錯時的策略,用戶可以選擇忽略、警告、記錄警告信息或拒絕下載等多種策略。
Artifact Max Age 構件緩存的最長時間,對於發布版本倉庫來說,默認值為 -1,表示構件緩存后,就一直保存着,不再重新下載。對於快照版本倉庫來說,默認值為 1440 分鍾,表示每隔一天重新緩存一次代理的構件。
Metadata Max Age 倉庫元數據緩存的最長時間。
Item Max Age 項目緩存的最長時間。


創建 Nexus 倉庫組

下面我們將創建一個倉庫組,並將剛剛創建的 3 個倉庫都聚合起來,操作步驟如下。

點擊倉庫列表上方的 Add... 按鈕,在下拉菜單中選擇 Repository Group,如下圖。

圖7:Nexus 添加倉庫組

在倉庫組配置界面,填寫對應信息,並將 bianchengbang_central_proxy、bianchengbang_Release_hosted 和 bianchengbang_Snapshot_hosted 3 個倉庫添加到倉庫組中,最后點擊 Save 按鈕進行保存,如下圖。

圖8:Nexus 倉庫組配置

查看 Nexus 倉庫列表,可以看到 bianchengbang_repository_group 倉庫組已經創建完成,如下圖。

 圖9:Nexus 倉庫列表-倉庫組

ref:Nexus是什么 (biancheng.net)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM