首頁 > 軟體

Gradle系列之從零搭建Maven私服庫

2020-09-23 00:30:18

原文發於微信公眾號 jzman-blog,歡迎關注交流。

前面幾篇文章學習了 Gradle 相關知識,Gradle 系列文章如下:

今天的內容是使用 Nexus Repository Manager 搭建 Maven 私服庫,這樣可以將一些通用的庫項目提取出來供其他項目使用,如工具庫、基本元件庫等,下面將從零開始搭建 Maven 私服庫,

  1. 安裝Nexus服務
  2. 運行Nexus服務
  3. 釋出庫項目
  4. 使用庫項目
  5. 總結

安裝Nexus服務

在如下地址下載 Nexus 安裝包:

http://www.sonatype.com/download-oss-sonatype

選擇適合自己的版本進行下載,如這裡選擇的是 nexus-3.13.0-01-win64,下載完成之後解壓,有兩個資料夾如下:

//nexus服務
nexus-3.13.0-01
//nexus相關配置檔案,如日誌、倉庫、索引、快取等配置檔案
sonatype-work

然後開啟 cmd 命令提示符以管理員方法運行,進入 Nexus 服務解壓目錄下的 bin 目錄下執行如下命令來安裝 Nexus 服務,參考如下:

nexus.exe/install

執行完成後 Nexus 服務就安裝完成了,安裝 Nexus 服務成功執行結果參考如下:

E:GradleNexusnexus-3.13.0-01-win64nexus-3.13.0-01bin>nexus.exe/install
Installed service 'nexus'.

運行Nexus服務

安裝完成 Nexus 服務之後執行如下命令來運行 Nexus 服務,參考如下:

nexus.exe/run

執行該命令會啟動 Nexus 服務,執行成功的關鍵資訊如下:


E:GradleNexusnexus-3.13.0-01-win64nexus-3.13.0-01bin>nexus.exe/run
Preparing JRE ...
2018-09-10 23:02:21,265+0800 INFO  [FelixStartLevel] *SYSTEM org.sonatype.nexus.pax.logging.NexusLogActivator - start
//...
-------------------------------------------------

Started Sonatype Nexus OSS 3.13.0-01

-------------------------------------------------
//...

當 Nexus 服務正常啟動之後,可使用如下地址訪問 Nexus 服務,具體如下:

http://localhost:8081/ 

運行結果如下所示:

創建倉庫

使用預設賬戶名 admin 和預設密碼 admin123 登入成功之後,然後選擇設定(小齒輪),在左側選擇 Security->Users,然後選擇創建使用者 Create local user 輸入相關資訊賬號創建完成,然後使用剛才創建的新賬號登入,然後就可以在自己的賬號下面創建倉庫了,可參考下圖:

釋出庫項目

倉庫創建好了之後就可以釋出項目到倉庫中了,這裡首先使用 Android Studio 創建一個庫項目 test,然後在其 build.gradle 檔案中配置上傳該庫的 Task,看一下該庫使用的插件:

//使用Android Library插件
apply plugin: 'com.android.library'
//使用maven插件
apply plugin: 'maven'

//Upload Task用於釋出上傳
uploadArchives{
    repositories{
        mavenDeployer{
            //正式釋出倉庫
//            repository(url:"http://localhost:8081/repository/jzman-releases/"){
//                authentication(userName:"jzman",password:"nexus2410.")
//            }
            //快照版本的倉庫
            snapshotRepository(url:"http://localhost:8081/repository/jzman-snapshots/"){
                authentication(userName:"jzman",password:"nexus2410.")
            }

            pom.project {
                //版本號,如果是快照版本,其版本號後面應該新增-SNAPSHOT,否則不能正常識別上傳
                version '1.0.0-SNAPSHOT'
                //一般寫項目名稱即可
                artifactId 'testWidget'
                //組別,類似包名,保證唯一性
                groupId 'com.manu.test'
                //打包格式
                packaging 'aar'
                //描述
                description '測試maven私服搭建'
            }
        }
    }
}
//...

配置完用於上傳庫項目的 task 之後,就可以根據需要上傳到之前創建的對應倉庫中了,執行上傳 task 可使用 Android Gradle 提供的快捷方式,如下圖所示:

等待 uploadArchives 執行完畢後對應的庫項目就釋出到對應的倉庫了,下面是釋出到了正式倉庫,如下圖所示:

正式版釋出每次必須的更改版本號,否則不能釋出成功,下面是釋出到了快照倉庫,如下圖所示:

如果將庫項目釋出到快照倉庫中,可以多次上傳發布,每次不需要修改版本號,它會自己維持在原來版本號的基礎上自增,如 1.0.0-時間戳-1、1.0.0-時間戳-2等,實際使用時還是用版本號 1.0.0-SNAPSHOT,使用時 Maven 會自動下載最新的快照版本,也就是序號最大的快照版本,這種方式便於將庫項目發現的問題及時釋出上去,有助於快速迭代,等到沒有問題就可以釋出正式版本了。

使用庫項目

庫項目是釋出成功之後,就可以在任意的項目中使用這個庫項目了,在項目下的 build.gradle 檔案中配置項目使用的 Maven 倉庫:

//...

allprojects {
    repositories {
        //...
        //配置maven倉庫
        maven {
            url 'http://localhost:8081/repository/jzman-releases/'
        }
    }
}

//...

然後,在具體的項目中就可以配置對應依賴就可以使用這個庫項目了,配置依賴如下:

dependencies {
    //...
    //配置依賴庫項目
    compile 'com.manu.test:testWidget:1.0.0'
}

總結

本篇文章的主要內容就是在本地搭建一個可用的 Maven 私服庫,實際開發中只需根據上述內容將對應的倉庫地址更換為自己公司的倉庫地址即可,其他如 jcenter 庫的搭建也類似,這篇文章的內容就到此為止。


IT145.com E-mail:sddin#qq.com