基於滴滴雲 CentOS 伺服器搭建 Nexus Maven 私庫
本文講解如何在 滴滴雲 CentOS 伺服器上搭建 Maven 私庫, 筆者假設讀者已經對於 Maven、Java有基本的瞭解,已經知道如何構建一個基本的 Maven 專案。
Maven 私庫在公司的協作開發中是必不可少的工具。 藉助於私庫可以引用公司內部工具包,提高常見 JAR 包下載速度等等。當我們開發一個工具包需要提供給其他業務方需要時,就可以將 JAR 包釋出到 Maven 私庫, 依賴方在
maven pom.xml
中配置該工具包的依賴即可。
接下來,將介紹常見的倉庫管理軟體 Nexus, 搭建一個 Maven 私庫, 並使用其解決 公司內部 JAR 包的釋出與引用
1.安裝 Nexus
1.1 配置 Java 環境
安裝 java
sudo yum install java - 1.8.0 - openjdk
配置
JAVA_HOME
環境變數 (Java 目錄預設在
/ usr/lib/jvm
下,配置 JDK 目錄為
JAVA_HOME
)
1.2 安裝 Maven
yum install maven
1.3 啟動 Nexus
-
下載 Nexus
wget https : //sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2-03-bundle.tar.gz
-
解壓
tar - zxvf nexus - 2.11.2 - 03 - bundle . tar . gz
-
修改 Nexus 解壓目錄下 bin/nexus
設定 RUN_AS_USER = root
-
啟動 Nexus 服務
. / nexus start
-
進入 Nexus 管理介面
2. Nexus
Nexus 預設有三個使用者:
-
admin:該使用者擁有 Nexus 的全部許可權,預設密碼為 admin123
-
deployment:該使用者能夠訪問 Nexus,瀏覽倉庫內容、搜尋、上傳部署構件,但是不能對 Nexus 進行任何配置,預設密碼為 deployment123
-
anonymous:該使用者對應了所有未登入的匿名使用者,它們可以瀏覽倉庫並進行搜尋
點選右上角 login 使用 admin, admin123 登陸可以看到
-
A: admin 賬號登入, 注意版本 2.11
-
B: admin 進入,點選 reponsitoris 可以看到倉庫列表
-
C: 在下一節將使用這兩個本地倉庫 釋出共享 JAR 包
2.1 常見倉庫型別
在上圖中可以看到 group,hosted,proxy,virtual 四種倉庫型別
2.1.1 Group
預設倉庫列表中會有一個 public 分組,該分組預設會包括所有倉庫,使用者可以自行新增刪除。
2.1.2 Hosted
Hosted 倉庫用來管理組織內的 JAR 包。例如公司內新開發了一個工具包,可以上傳到 hosted 型別倉庫。
Releases,Snapshots 分別是 release 版和 snapshot 版的倉庫
2.1.3 Poxy
本地倉庫中不存在的包會到 proxy 倉庫中下載,proxy 倉庫需要配置遠端倉庫,即:到哪個倉庫去下載。
2.1.4 Virtual
虛擬倉庫,用來相容 Maven1。
本節簡單講解了 Nexus 的四種倉庫型別,感興趣的讀者可自行深度瞭解各個倉庫型別的使用,下一節將使用 Nexus 自帶的 Releases,Snapshots 兩個本地倉庫,講解如何在公司內釋出引用 JAR 包。
3. 專案實戰
本節,我們將構建兩個 Maven 專案 pro1, pro2 其中 pro2 引用 pro1, 我們將學會如何將專案上傳到倉庫,以及如何引用倉庫中的專案。
3.1 Snapshots、Releases 倉庫
Snapshots 倉庫用來管理快照 JAR 包,例如我們在專案
pom.xml
中看到的:
< version > 0.1.SNAPSHOT < / version >
< version > 0.1.RELEASE < / version >
Release 版和 Snapshot 版只是使用版本後的字串區分,在以下的配置我們均使用快照版介紹:
-
A: 倉庫的 ID
-
B: Snapshot 或者 Release 版本
-
C: 可以使用 deploy 將 JAR 包上傳到倉庫。
3.2 pom.xml 配置
透過
pom.xml
中的配置,我們要將專案釋出到 Snapshots 倉庫中, pro1 的
pom.xml
進行以下配置:
在
pom.xml
配置 version 為快照版,配置 GroupID,ArtifactID 象徵性的引用 Gson 和 Junit,在最後我們配置了要釋出的倉庫地址,其中包括 Releases, Snapshots 倉庫。其中倉庫的地址我們可以在倉庫的 Summary 選項卡中找到。一般情況下,在公司內部使用內網 IP 地址訪問Nexus,注意 Snapshots 的 ID 為 Snapshots
只配置倉庫地址就可以釋出嗎?
當然不行! 除此之外,還需要修改預設的 Maven 配置的,在
~/.m2/
目錄下,新建或者修改
settings.xml
。
配置檔案新增 Nexus 的賬號密碼:
其中 Releases,Snapshots 是倉庫的 ID。
釋出 pro1 到 Snapshots 倉庫。 ( package:打包; install:把 JAR 放到
~/.m2
本地倉庫下;deploy:釋出到遠端倉庫)
mvn clean package install deploy - Dmaven . test . skip = true
在 Nexus 上已經可以看到 pro1 已經發布 ( 在 Summary 選項卡可以看到 Snapshots 的引用地址 )。
本節講解了將一個專案釋出到遠端倉庫的步驟與配置,只需要在專案
pom.xml
和 Maven 預設全域性配置
settings.xml
中配置倉庫的地址和賬號即可。
3.3 引用遠端倉庫專案
上一小節,我們已經掌握髮布專案,本節將從 Nexus 引用已釋出的專案。需要說明的是,由於我們在釋出時一般會選擇
mvn package install deploy
其中 install 會將 JAR 包釋出到本地的
~/.m2/repository
目錄下,實際引用專案時也會優先從本地拉取。
為了驗證配置的正確性,筆者在構建 pro2專案時,是在另一臺伺服器構建的。引用的倉庫地址都不是 localhost。讀者也可以在實踐中也可以嘗試使用不同的機器構建專案,測試是否按照期望從遠端倉庫獲取,而不是從本地獲取。
pro2 的
pom.xml
中配置了對 pro1 的依賴:
如果我們僅僅是想引用遠端倉庫的專案是不需要在
pom.xml
中額外配置的,只需要在
./m2/settings
配置賬號密碼以及倉庫即可。
在 settings 中需要配置遠端倉庫的地址即可,同時還需要配置 activeProfiles, 標識啟用哪個配置,實際中可配多個 profile, 透過 activeProfile 控制啟動哪個。
現在我們可以利用 Nexus 釋出引用 JAR 包了,但是還是有幾點需要讀者注意:
-
在本文中使用的賬號都是 admin,由於 admin 賬號許可權過大,應該使用 deployment 賬號,或者每個使用者一個賬號
-
當需要釋出專案到 Nexus,需要配置遠端倉庫地址,實際可以透過 Maven 的
parent
引用父級專案解決的。在父級專案中配置通用的pom.xml
,子專案就不需要重複複製貼上配置 -
私有倉庫可以配置映象策略,快取已經下載的 JAR 包,這樣可以提高速度,不需要每次都從中央倉庫下載了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2284764/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於滴滴雲搭建 Lustre
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- 基於滴滴雲搭建微信小程式微信小程式
- 使用Nexus搭建Maven本地倉庫Maven
- 基於滴滴雲搭建安全穩定的 Memcached 伺服器伺服器
- 基於滴滴雲主機搭建 FTP 檔案共享伺服器(一)FTP伺服器
- 基於滴滴雲搭建 Ceph 開發環境開發環境
- docker搭建Nexus搭建Maven私服DockerMaven
- Jenkins之Nexus搭建Maven私有倉庫教程JenkinsMaven
- 基於 CentOS 8 搭建 openLDAP 伺服器CentOSLDA伺服器
- 基於滴滴雲安裝 Docker 並上傳映象到滴滴雲 Docker 倉庫Docker
- 搭建Maven和Nexus環境Maven
- 基於Jenkins+Maven+Gitea+Nexus從0到1搭建CICD環境JenkinsMavenGit
- kubernetes實戰篇之nexus oss伺服器部署及基於nexus的docker映象倉庫搭建伺服器Docker
- 基於滴滴雲 DC2 搭建 VPP 應用例項
- 基於滴滴雲DC2+Nginx搭建負載均衡方案Nginx負載
- 基於滴滴雲搭建輕量文件網站生成工具 Docsify網站
- maven學習(中)- 私服nexus搭建Maven
- 基於滴滴雲虛擬機器的TensorFlow搭建與使用虛擬機
- 在基於CentOS的雲主機上用vsftpd搭建FTP伺服器CentOSFTP伺服器
- Maven倉庫管理之NexusMaven
- 使用騰訊雲搭建CentOS雲伺服器CentOS伺服器
- maven 學習總結(九)——使用Nexus搭建Maven私服Maven
- Linux下用nexus搭建maven私服LinuxMaven
- 基於滴滴雲搭建 S3FS 及其實現機制剖析S3
- 滴滴雲上搭建 Gluster
- Nexus私有maven庫部署和使用Maven
- Maven私有倉庫-Nexus3MavenS3
- maven倉庫管理器NexusMaven
- 基於滴滴雲部署 Elasticsearch + Kibana + FluentdElasticsearch
- 基於騰訊雲搭建squid代理伺服器UI伺服器
- 在滴滴雲 DC2 雲伺服器上搭建 RabbitMQ 叢集伺服器MQ
- 在滴滴雲 DC2 雲伺服器上搭建 Codis 實戰伺服器
- 在滴滴雲 DC2 雲伺服器上搭建 MongoDB 實戰伺服器MongoDB
- Maven私服倉庫配置-Nexus詳解!Maven
- 使用阿里雲映象站NTP服務搭建NTP伺服器(基於CentOS 7系統)阿里伺服器CentOS
- 基於滴滴雲之 Netperf 網路效能測試工具的搭建及使用
- 基於滴滴雲搭 SeaweedFS 儲存系統