歡迎訪問我的GitHub
https://github.com/zq2599/blog_demos
內容:所有原創文章分類匯總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等;
關于nexus3
Java開發者常在內網部署nexus3作為以下用途:
- 中央倉庫的的快取;
- 內網私有倉庫;
接下來分別實戰這兩個功能;
環境資訊
- nexus3版本:3.19.1
- maven版本:3.6.3
- JDK:1.8.0_191
nexus3的部署
本文聚焦nexus3的使用,不在此討論部署的細節,推薦使用docker來部署,我這里是在一臺家用NAS上通過docker部署的,詳情可參考《群暉DS218+做maven私服(nexus3)》
新建倉庫用作快取
這里的中央倉庫選用阿里云的,速度和穩定性都比較出色:
- 新建倉庫的操作如下圖:

- 在型別選擇頁面選中maven2(proxy),如下圖紅框:

- 接下來的頁面只要填兩處,名字:aliyun-proxy,remote storage:http://maven.aliyun.com/nexus/content/groups/public/ ,如下圖紅框:

- 提交表單后回到串列頁面,在新增的倉庫上點擊copy按鈕即可得到倉庫地址,如下圖:

- 記下這個倉庫的地址(http://192.168.50.43:8081/repository/aliyun-proxy/),內網所有電腦都能從這里地址獲取中央倉庫jar包,設定方法后面會說到;
新建倉庫用作私有倉庫
對于中央倉庫沒有的jar,以及專案中發布的二方庫,都可以存放到私有倉庫;
- 再新建一個倉庫,型別選擇maven2(hosted),如下圖紅框:

- 名字:nexus-private,其他的不需要修改:

- 這里要注意的是,如果您創建的私有倉庫用來保存自己發布的二方庫,最好建兩個,一個用來保存正式發布的,Version policy型別:Release,另一個保存開發中的(maven本地不快取),Version policy型別是Snapshot,本文為了簡單起見只建了一個Release型別的;
- 記下這個倉庫的地址:http://192.168.50.43:8081/repository/nexus-private/
- 至此,倉庫創建完畢,我們一共有以下兩個倉庫:
快取型:http://192.168.50.43:8081/repository/aliyun-proxy/
本地私有型:http://192.168.50.43:8081/repository/nexus-private/ - 有了倉庫,接下來設定開發環境上的Maven了;
Maven設定(使用快取倉庫)
先做aliyun-proxy倉庫的設定,這樣就可以使用nexus3的快取功能了:
- 打開maven的組態檔settings.xml;
- 找到mirrors節點,增加一個server而配置,內容如下:
<mirror>
<id>aliyun-proxy</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.50.43:8081/repository/aliyun-proxy/</url>
</mirror>
- 快取倉庫的設定已經完成了,接下來通過構建maven工程驗證一下,下面是個最簡單的maven工程的pom.xml檔案:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bolingcavalry</groupId>
<artifactId>nexus3demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
</dependencies>
</project>
- 在pom.xml所在目錄執行命令:mvn clean compile -U -DskipTests ,如下圖,可見是通過nexus3下載中央倉庫的jar,然后專案構建成功:

中央倉庫不存在的jar
私有倉庫的一個重要功能,就是提供中央倉庫之外的jar下載,接下來舉個例子:
- 在pom.xml中添加一個中央倉庫不存在的jar:
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-schema-registry-client</artifactId>
<version>3.3.1</version>
</dependency>
- 再去構建就會報錯:

上述問題是常見的,有的jar沒有發布到中央倉庫,用maven構建時找不到就報錯了,
上傳jar到私有倉庫
解決上述問題的思路:找到這個jar -> 上傳到私有倉庫 -> maven構建時從私有倉庫下載這個jar;
- 思路有了,現在來試著用私有倉庫解決上面的問題;
- 把上述jar下載到本地,下載地址:http://packages.confluent.io/maven/io/confluent/kafka-schema-registry-client/3.3.1/kafka-schema-registry-client-3.3.1.jar
- 登錄nexus3,按照如下步驟操作:

- 填寫表單,按照下圖步驟操作,把jar檔案提交到nexus3:

- 現在私有倉庫中已經有jar了,接下來看看maven如何使用這個jar檔案;
maven使用私有倉庫
- 打開maven的組態檔settings.xml;
- 找到profiles節點,增加一個profile的配置,內容如下:

- 找到activeProfiles節點,增加一個activeProfile而配置,內容如下:
<activeProfile>nexus3</activeProfile>
- 找到剛才新增的mirror,修改其mirrorOf節點的值,修改后的mirror節點值如下:
<mirror>
<id>aliyun-proxy</id>
<mirrorOf>external:local-nexus3</mirrorOf>
<url>http://192.168.50.43:8081/repository/aliyun-proxy/</url>
</mirror>
- mirrorOf的值從之前的*改成external:local-nexus3,是做了轉發邏輯的排除操作,這樣做了之后,local-nexus3倉庫的請求會轉發到私有倉庫,而其他所有的請求都轉發到了快取倉庫aliyun-proxy;
- 再次構建剛才的maven專案,這次終于構建成功了,如下圖,kafka-schema-registry-client相關的資料都從私有倉庫下載:

至此,nexus3常用的快取和私有倉庫功能都嘗試過了,如果您正在搭建私有maven倉庫,希望本文能夠給您提供參考,
歡迎關注公眾號:程式員欣宸
微信搜索「程式員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/193351.html
標籤:其他
上一篇:Docker之兩小時入門
