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

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

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

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

  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 服務,參考以下:app

nexus.exe/install

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

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 服務,執行成功的關鍵信息以下:post

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/

運行結果以下所示:測試

在這裏插入圖片描述

建立倉庫

使用默認帳戶名 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.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 庫的搭建也相似,這篇文章的內容就到此爲止。

image