Maven篇----05 Nexus3私服管理


1. Nexus3介紹

nexus 作為一款優秀的倉庫管理工具,不僅默認支持maven、docker、npm、yum、apt等多種倉庫的配置。nexus3 最新的還新增了store隔離存儲功能,通過UI創建不同的store為repo指定不同的存儲空間,達到物理隔離。
幫助文檔

目錄結構說明

nexus                  安裝目錄
├── LICENSE.txt
├── NOTICE.txt
├── bin                此目錄包含nexus的啟動腳本和與啟動相關的配置文件,其中的nexus文件是nexus的啟動文件。
├── deploy             
├── etc                配置文件目錄。
├── lib                依賴庫目錄。
├── public             公共資源目錄。
├── system             此目錄包含構成nexus的所有組件和插件。
sonatype-work          數據目錄
├── nexus3
│   ├── blobs          沒有使用絕對路徑定義的所有基於文件系統的blob存儲的父目錄。
│   ├── cache          此目錄包含當前緩存的karaf軟件包的信息。
│   ├── db             此目錄包含OrientDB數據庫,是repository manager元數據的主要存儲。
│   ├── elasticsearch  此目錄包含elasticsearch的當前配置狀態。
│   ├── etc            此目錄包含了repository manager的主要運行時的配置。在配置運行時環境中這些文件被進一步補充說明了。
│   ├── generated-bundles
│   ├── instances
│   ├── karaf.pid
│   ├── health-check
│   ├── keystores      用於識別repository manager自動生成的秘鑰。
│   ├── lock
│   ├── log            日志文件存放的目錄。
│   ├── orient
│   ├── port
│   ├── restore-from-backup
└── └── tmp            臨時存儲目錄。

2. Sonatype Nexus Repository Manager

在右上角點擊“Sign In”的登錄按鈕,輸入admin/admin123,登錄成功

2.1. Browse Server Content

類似於Maven倉庫上的搜索功能,就是從私服上查找包,支持模糊搜索的

2.1.2 Browse Server Content -- Browse

2.1.3 Browse Server Content -- Upload

顧名思義就是上傳jar包到私服中,可以選擇其中一個hosted倉庫。

注意:通過頁面直接上傳的方式只是上傳了jar包,若這個jar通過Maven依賴了其他jar,那其他項目在下載這個jar時無法取得它的依賴。所以,除非這個jar沒有任何依賴,否則還是推薦通過命令行或者IDE的方式上傳jar包,這樣才會把pom一並上傳。

2.2 Repository

2.2.1 Repositories

倉庫分為三種:Proxy、hosted、group
【Proxy】
代理倉庫,當PC訪問中央庫的時候,先通過Proxy下載到Nexus倉庫,然后再從Nexus倉庫下載到PC本地。
這樣的優勢只要其中一個人從中央庫下來了,以后大家都是從Nexus私服上進行下來,私服一般部署在內網,這樣大大節約的寬帶。
創建Proxy的具體步驟

  1. 點擊左上角的“Create Repositories”按鈕
  2. 選擇要創建的類型,可以選擇maven2(hosted)。
  3. 填寫詳細信息(Nexus默認遠程倉庫響應慢,而且經常連不上。可以添加阿里雲代理倉庫)
    Name:aliyun
    Remote Storage:http://maven.aliyun.com/nexus/content/groups/public
    Blob Store:選擇代理下載包的存放路徑
  4. 選中倉庫組 Public Repositories,把 Aliyun Repository 從 Availiable Repositories 中拖到Ordered Group Repositories中,放在Central上邊。保存

【Hosted】
Hosted是宿主機的意思,用於將第三方的Jar或者我們自己的jar放到私服上。

Hosted有三種方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已經發布的Jar包
Snapshot: 未發布的版本
Mixed:混合的

Hosted的創建和Proxy類似,類型需選擇maven2(hosted)。

注意:Deployment Pollcy,我們需要把策略改成“Allow redeploy”,以允許重復發布覆蓋同版本的jar包。

【Group】
能把多個倉庫合成一個倉庫來使用,把上幾步創建的代理倉庫和宿主倉庫都加入到“maven-public”倉庫組中:

2.2.2 Blob Stores

文件存儲的地方,創建一個目錄的話,對應文件系統的一個目錄。
如果眾多項目放在一個blob中,將會導致其非常巨大,所以對於不同的repository建議創建自己的blob。

2.2.3 Content Selectors

2.2.4 Cleanup Policies

2.2.5 Routing Rules

2.3 Security

Nexus是基於權限做訪問控制的,服務器的每一個資源都有對應的權限來控制,因此用戶執行特定的操作時就必須擁有必要的權限。管理員必須以角色的方式將權限賦予Nexus用戶。用戶可以被賦予一個或者多個角色,角色可以包含一個或多個權限,角色還可以包含一個或者多個其他角色

包含用戶、角色、權限的配置。

2.3.1 Privileges--Manage privileges

2.3.2 Roles--Manage roles

2.3.3 Users--Manage users

2.3.4 Anonymous--Browse server contents without authenticating

2.3.5 LDAP--Manage LDAP server configuration

2.3.6 Realms--Manage the active security realms and their order

2.3.7 SSL Certificates--Manage trusted SSL certificates for use with the Nexus truststore

2.4 Support

包含日志及數據分析。

2.4.1 Logging

2.4.2 Metrics

2.4.3 Status---System status checks

2.4.4 Support ZIP

2.4.5 System Information

2.5 System

包含API(Nexus這個API文檔貌似是用swagger做的)、郵件服務器,設置調度任務等。
https://help.sonatype.com/repomanager3/rest-and-integration-api

3. 將本地庫批量導入到Nexus3.x上(Maven私服)

問題描述
(1)由於公司內網的 Nexus 私服倉庫不能聯網,本地倉庫已經有很多的 maven 的 jar 包了,便想將其從本地倉庫導入到 Nexus 私服中。
(2)Nexus2.x 批量導入本地庫是十分容易的,只需將庫文件夾復制到對應 nexus 庫下面,去網頁刷新一下索引就OK了。在 Nexus3.x 中,應該怎么做

a). 首先訪問 Nexus 管理頁面並登錄,點擊“Create repository”按鈕新建一個類型為maven2(hosted)的倉庫。

b). 在服務器 /data/nexus 目錄下,新建一個文件夾 import,放入我們的本地庫文件夾:

c). 在 repository 文件夾下執行如下命令創建一個 shell 腳本:
vi mavenimport.sh

#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; do
    case $opt in
        r) REPO_URL="$OPTARG"
        ;;
        u) USERNAME="$OPTARG"
        ;;
        p) PASSWORD="$OPTARG"
        ;;
    esac
done
  
find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

d). 保存退出后執行如下命令

#賦予其執行權限:
$ chmod +x mavenimport.sh
#jar 包都導入到指定倉庫中
$ ./mavenimport.sh -u deployment -p deployment123 -r http://10.15.22.172:8081/nexus/repository/maven-local/
#注意:命令中 Nexus 用戶名、用戶密碼、倉庫地址根據實際情況進行修改。

e). 訪問 Nexus 控制台頁面,可以發現確實都上傳成功了


免責聲明!

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



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