banner
jzman

jzman

Coding、思考、自觉。
github

從零開始建立Maven私有庫的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:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>nexus.exe/install
Installed service 'nexus'.

運行 Nexus 服務#

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

nexus.exe/run

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


E:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>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/ 

運行結果如下所示:

image

創建倉庫#

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

image

發布庫項目#

倉庫創建好了之後就可以發布項目到倉庫中了,這裡首先使用 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 提供的快捷方式,如下圖所示:

image

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

image

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

image

如果將庫項目發布到快照倉庫中,可以多次上傳發布,每次不需要修改版本號,它會自己維持在原來版本號的基礎上自增,如 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 倉庫的搭建也類似,這篇文章的內容就到此為止。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。