Nexus存儲庫管理器搭建-Maven私服詳解
在企業(yè)開發(fā)過程中,就比如說我們Java程序員,一般都是使用Spring或者是SpringBoot項目進行開發(fā)的,基本上都是基于Maven或者是Gradle構建的項目,如果說我們使用的Maven倉庫是中央倉庫的話,在企業(yè)內部協(xié)同開發(fā)的時候,會帶來諸多不便。
例如,當我們需要協(xié)同開發(fā)時,難免會對Jar包進行管理,不可能將我們的Jar包上傳至中央倉庫去,所以我們需要搭建屬于內部的Maven倉庫。Maven私服倉庫也有者諸多好處。
本文詳細講述了 Maven私服的搭建、Jar包部署以及SpringBoot配置。
一、概述
Nexus 是一個存儲庫管理器,極大地簡化了內部倉庫的維護和外部倉庫的訪問。
有非常簡單便捷的用戶操作界面,方便對Nexus操作及管理。
在 Nexus 3.0 版本后,增加了對 Docker、NetGet、npm、Bower的支持。
二、為什么要使用Maven私服倉庫
大家可能會有一個疑問,為啥要搭建Maven私服呢?使用官方的Maven倉庫不就可以嗎?而且國內也有鏡像加速地址,比如阿里等。而我們去搭建一個Maven私服,需要在服務器單獨進行搭建,還要進行維護。
針對這些問題,下面是使用Maven私服的好處:
- 托管內部存儲庫: 可以共享內部依賴項,以方便將依賴項安裝在每個開發(fā)人員的本地存儲庫中。
- 加速Maven構建: 當在 Maven 中運行多模塊項目時,如果項目依賴于幾個 SNAPSHOT,或者沒有指定插件版本,Maven 可能必須向遠程存儲庫發(fā)出數(shù)十到數(shù)百個請求。安裝 Nexus 的本地實例后將構建時間大大的縮減了。
- 節(jié)省帶寬: 如果沒有 Maven 私服,開發(fā)人員會浪費帶寬一遍又一遍的從中央倉庫下載相同的文件。使用 Nexus 來保留本地緩存將節(jié)省大量帶寬。
- 控制和審計: 可以有效的控制開發(fā)團隊將使用哪些依賴項。
- 可上傳部署第三方Jar: 可以方便的上傳第三方Jar包,并對其進行管理。
- 可預測性和穩(wěn)定性: 依靠中央倉庫進行日常運營也意味著依賴于互聯(lián)網連接,如果有 Nexus ,則可以確保即使失去互聯(lián)網連接,構建工作也可以繼續(xù)進行。
三、搭建Nexus
這里使用docker來搭建Nexus。
1)、創(chuàng)建文件夾
mkdir -p /usr/local/docker/nexus
2)、創(chuàng)建docker-compose文件
vi /usr/local/docker/nexus/docker-compose.yml
docker-compose.yml內容如下:
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus
privileged: true
ports:
- 8081:8081
volumes:
- ./data:/nexus-data3)、啟動
啟動命令
docker-compose up -d
如果遇到文件夾權限問題,使用命令更改文件夾權限chmod -R 777 data,然后在重新啟動
4)、訪問
啟動完成后,瀏覽器訪問http://IP:8081/,效果如下:

5)、登錄
登錄Nexus,點擊右上角 Sign in,第一次登錄會提示admin的密碼在哪,根據(jù)提示去相關目錄查看。docker-compose中映射nexus-data目錄為/usr/local/docker/nexus/data目錄,所以我們在data目錄去找admin.password文件即可看到密碼了。


查看密碼
$ cat admin.password 1cf97ae1-270f-47e5-8c83-f5af04af34af
登錄后會提示設置新的密碼,設置一個記得住的密碼即可。
四、SpringBoot整合
以my-project項目為例。
4.1、pom.xml配置
有一個統(tǒng)一的依賴管理模塊my-project-dependencies,在pom.xml中增加部署服務器的 Maven 節(jié)點內容以及倉庫地址,內容如下:
<!-- 部署服務器的 Maven 節(jié)點 --> <distributionManagement> <repository> <id>nexus-releases</id> <name>Nexus Release Repository</name> <url>http://192.168.110.158:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://192.168.110.158:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> <repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://192.168.110.158:8081/repository/maven-public/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> <repository> <id>aliyun-repos</id> <name>Aliyun Repository</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>sonatype-repos</id> <name>Sonatype Repository</name> <url>https://oss.sonatype.org/content/groups/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>sonatype-repos-s</id> <name>Sonatype Repository</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Nexus Plugin Repository</name> <url>http://192.168.110.158:8081/repository/maven-public/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </pluginRepository> <pluginRepository> <id>aliyun-repos</id> <name>Aliyun Repository</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories>
將IP地址更改為自己的就可以了
4.2、測試部署
使用dos窗口進入my-project-dependencies目錄下,執(zhí)行部署命令
mvn deploy

此時出現(xiàn)失敗,關鍵信息Return code is: 401, ReasonPhrase: Unauthorized. ,錯誤問題是未授權
我們打開我們配置的Maven的settings.xml,在servers節(jié)點增加如下配置
<server> <id>nexus-releases</id> <username>admin</username> <password>123456</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>123456</password> </server>
- id: 與構建項目的pom.xml中的repository的id一致。
- username: 部署用戶(可在Nexus中單獨創(chuàng)建一個用戶專門拿來部署,這里直接使用admin)
- password: 登錄密碼
配置好這些后,先將原先的命令窗口關閉,打開一個新的,在執(zhí)行一次部署命令
mvn deploy

部署成功,接著我們打開Nexus端查看部署上來的項目

在 Maven 私服中也可以看到,大功告成~
五、上傳部署Jar包
在開發(fā)過程中,我們可能會單獨的對Jar進行管理,而我們手中又只有一個Jar文件。這時,我們需要使用到Nexus的上傳功能
1)、點擊Upload->選擇需要上傳的倉庫

2)、上傳Jar包,填寫表單信息

3)、上傳成功

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mybatis-plus中IService接口的基本使用步驟
Mybatis-plus是一個Mybatis的增強工具,它提供了很多便捷的方法來簡化開發(fā),IService是Mybatis-plus提供的通用service接口,封裝了常用的數(shù)據(jù)庫操作方法,包括增刪改查等,下面這篇文章主要給大家介紹了關于Mybatis-plus中IService接口的基本使用步驟,需要的朋友可以參考下2023-06-06

