歡迎訪問我的GitHub
這里分類和匯總了欣宸的全部原創(含配套原始碼):https://github.com/zq2599/blog_demos
常見場景
- 作為java庫的開發者,如何讓其他專案用上自己的java庫?常用方式是上傳到內網環境的Nexus3私服,其他java專案用maven或gradle從Nexus私服下載這個java庫使用:

- 上述程序是一名java程式員的基本功,今天咱們就來實戰演練這套基本功,全文由以下內容組成:
- 準備作業
- Nexus3上創建帳號
- Nexus3上創建兩個倉庫(release和snapshot)
- java庫的專案中添加上傳jar的配置,并驗證上傳
- 使用java庫的專案中添加下載jar的配置,并驗證使用
- snapshot更新驗證
- release驗證
前提
開始實戰前有些準備作業要先完成,首先是本地開發環境:
- 作業系統:win10
- JDK:1.8.0_281
- Gradle:6.8.3
- IDEA:2021.1 (Ultimate Edition)
還請在局域網部署Nexus3私服,部署和配置方式請請參考:
- 《Ubuntu部署和體驗Nexus3》
- 《群暉DS218+做maven私服(nexus3)》
- 《Nexus3常用功能備忘》
- 上述準備作業完成后,可以開始實戰操作了;
Nexus3上創建帳號
-
以管理員身份登錄Nexus3,按照下圖操作新增一個帳號,用來執行上傳下載操作:

-
帳號基本資訊如下,注意兩個紅框中的配置,狀態是激活,角色您可以視情況而定,我這里為了簡單就用了管理員角色:

-
最后點擊底部的Create local user按鈕完成創建;
Nexus3上創建兩個倉庫(release和snapshot)
- 一般咱們會用到兩種型別的倉庫:release和snapshot,先創建release的,操作如下:

- 型別選擇maven2(hosted):

- 需要設定的引數如下圖,這里我起的名字是my-release,注意Version policy一定要選擇Release:

- 點擊底部的Create respository即可創建倉庫;
- 接著創建snapshot型別的倉庫,名字是my-snapshot,詳情如下所示,注意Version policy一定要選擇Snapshot,并且允許重復部署:

- 好了,設定完成,接下來進入開發環節,先把二方庫部署到剛剛新建的倉庫中,再在另一個應用中使用這個二方庫;
將二方庫部署到Nexus3
- 接下來的操作在您的二方庫工程上進行,我這里用的是一個典型父子結構的gradle工程,該工程詳情請參考《Gradle構建多模塊SpringBoot應用》,下圖紅框中的democlient就是二方庫模塊,這里面只有一個Student類,咱們要做的就是將democlient模塊構建成jar并部署到Nexus3的倉庫中:

- democlient模塊的build.gradle如下,與上傳操作有關的是maven插件,以及uploadArchives任務的引數,其中倉庫的url引數的來源稍后會講到:
plugins {
id 'java-library'
// 使用maven插件執行上傳jar到Nexus3的操作
id 'maven'
}
// 如果要上傳庫到私服,就在此添加
def uploadGroup = group
def uploadArtifactId = this.name
def uploadVersion = version
// uploadArchives任務的配置
uploadArchives {
// 倉庫配置
repositories {
mavenDeployer {
// release倉庫的配置
repository(url: 'http://192.168.50.43:8081/repository/my-release/') {
authentication(
// Nexus3上有權限上傳jar的帳號及其密碼
userName: 'bolingcavalry',
password: '123456'
)
}
// snapshot倉庫的配置
snapshotRepository(url: 'http://192.168.50.43:8081/repository/my-snapshot/') {
authentication(
// Nexus3上有權限上傳jar的帳號及其密碼
userName: 'bolingcavalry',
password: '123456'
)
}
// 二方庫的身份引數:group、artifact、version
pom.groupId = uploadGroup
pom.artifactId = uploadArtifactId
pom.version = uploadVersion
}
}
}
// 子模塊自己的依賴
dependencies {
// 使用api,將依賴傳遞給使用democlient的模塊
api 'org.projectlombok:lombok'
// annotationProcessor不會傳遞,使用了lombok生成代碼的模塊,需要自己宣告annotationProcessor
annotationProcessor 'org.projectlombok:lombok'
}
- uploadArchives任務中的倉庫url引數,請直接從倉庫的詳情頁復制,如下圖紅框4就是my-release倉庫的url:

- 確認您專案的version,我這里是1.0.0-SNAPSHOT,如下圖紅框,所以構建出的jar會上傳的my-snapshot倉庫:

- 設定完畢后雙擊下圖紅框中的按鈕,即可開始編譯和構建:

- 構建完成后控制臺輸出如下,可見會先做編譯打包再上傳:

- 去Nexus3看看,點擊下圖位置查看倉庫內容:

- 如下圖,jar已經上傳成功,這里有多個是因為我這邊執行了多次uploadArchives任務:

上傳到my-release倉庫
- 篇幅所限,就不展示上傳到my-release倉庫的程序了,因為和前面上傳到my-snapshot的操作是一樣的,唯一的不同就是專案version中不要有snapshot,如下圖,這樣就能上傳到my-release倉庫:

- 需要注意的是,之前創建my-release倉庫時,其Deployment policy選項為Disable redeploy,即不允許同一個version重復提交,因此同一個version只能成功上傳一次,如果再次上傳會報錯,如下圖:

使用倉庫的內容
使用倉庫的方法很簡單,首先確保使用者的電腦能夠訪問到倉庫,再在專案中配置倉庫地址和jar坐標就行了,如下圖紅框:

- 以上就是Gradle專案的jar發布到私有倉庫和使用該jar的完整程序,如果您正在發布二方庫,希望本文可以給您一些參考;
你不孤單,欣宸原創一路相伴
- Java系列
- Spring系列
- Docker系列
- kubernetes系列
- 資料庫+中間件系列
- DevOps系列
歡迎關注公眾號:程式員欣宸
微信搜索「程式員欣宸」,我是欣宸,期待與您一同暢游Java世界…
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275735.html
標籤:AI
上一篇:TensorFlow Probability 聯合分布變分推斷工具,估計權重的貝葉斯可信區間更簡單
下一篇:使用QQ推廣作為客服或留言
