Maven私服Nexus的搭建
本文主要介紹Maven私服Nexus的搭建,搭建的初衷是因為某個開發室不能保證連線外網(全球資訊網),所以打算搭建一個Maven私服,提前將需要的jar包部署到私服中。
軟體版本
- 作業系統:centOS 3.6
- JDK: JDK 1.8
- Nexus OSS: Nexus 2.8.1
3.x版本不帶有離線搜尋dependency功能,所以選擇2.8.1
私服簡介
私服是架設在區域網的一種特殊的遠端倉庫,目的是代理遠端倉庫及部署第三方構件。有了私服之後,當 Maven 需要下載構件時,直接請求私服,私服上存在則下載到本地倉庫;否則,私服請求外部的遠端倉庫,將構件下載到私服,再提供給本地倉庫下載。
安裝JDK
1.解壓jdk
[root@localhost ~]# tar -zxvf jdk1.8.0_151.tar.gz -C /home/manver/nexus/
2.配置環境變數
- 用vim開啟/etc/profile,在末尾追加
export JAVA_HOME=/home/manver/nexus/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-編譯profile,使追加的環境變數生效
source /etc/profile
安裝nexus
[[email protected]~]# tar -zxvf nexus-2.8.1-bundle-unix.tar.gz -C /home/manver/nexus/
[[email protected]~]# cd /home/manver/nexus/bin
[[email protected]]# nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
************************* ***************
Starting Nexus OSS...
Started Nexus OSS.
訪問驗證
開啟瀏覽器,訪問:http://ip:port/nexus/
Nexus預置的倉庫
Nexus 的倉庫分為這麼幾類:
- hosted 宿主倉庫:主要用於部署無法從公共倉庫獲取的構件(如 oracle 的 JDBC 驅動)以及自己或第三方的專案構件;
- proxy 代理倉庫:代理公共的遠端倉庫;
- virtual 虛擬倉庫:用於適配 Maven 1版本;
- group 倉庫組:Nexus 通過倉庫組的概念統一管理多個倉庫,這樣我們在專案中直接請求倉庫組即可請求到倉庫組管理的多個倉庫。
新增代理倉庫
以 Sonatype 為例,新增一個代理倉庫,用於代理 Sonatype 的公共遠端倉庫。點選選單 Add - Proxy Repository :
將新增的 Sonatype 代理倉庫加入 Public Repositories 倉庫組。選中 Public Repositories,在 Configuration 選項卡中,將 Sonatype Repository 從右側 Available Repositories 移到左側 Ordered Group Repositories,save 儲存:
搜尋構件
為了更好的使用 Nexus 的搜尋,我們可以設定所有 proxy 倉庫的 Download Remote Indexes 為 true,即允許下載遠端倉庫索引。
索引下載成功之後,在 Browse Index 選項卡下,可以瀏覽到所有已被索引的構件資訊,包括座標、格式、Maven 依賴的 xml 程式碼:
有了索引,我們就可以搜尋了:
配置客戶端maven使用私服
私服搭建成功,我們就可以配置 Maven 使用私服,以後下載構件、部署構件,都通過私服來管理。
在 settings.xml 檔案中,為所有倉庫配置一個映象倉庫,映象倉庫的地址即私服的地址(這兒我們使用私服公共倉庫組 Public Repositories 的地址):
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.21.128:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://192.168.21.128:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
配置之後,客戶端的需要依賴的jar,直接從私服下載。