Android gradle Nexus Maven私有倉庫搭建筆記

https://www.jianshu.com/p/666c64e8854d

前言

  什麼是maven、gradle?

  Maven是一個項目管理和自動構建工具。
  Gradle是一個基於JVM的構建工具,是一款通用靈活的構建工具,支持maven, Ivy倉庫,支持傳遞性依賴管理,而不需要遠程倉庫或者是pom.xml和ivy.xml配置文件,基於Groovy,build腳本使用Groovy編寫。

  Android支持的Maven倉庫:
  mavenCentral 是最早的 maven 中央倉庫
  jcenter 是 Android Studio 0.8 版本起的默認 maven 中央倉庫
  本機的倉庫
  部署在內網服務器的私有倉庫

一、爲什麼需要搭建maven私有倉庫?

  做java開發的童鞋對Maven一定不陌生;做android開發的童鞋,用得最多的是gradle。其實gradle的第三方庫,也是放在maven倉庫上。

  對於第三方庫,大家基本都配置maven、gradle從遠程獲取,估計很少直接下載jar放在工程裏(對於沒有放在maven repository上的庫,只能這麼幹)。這麼做方便管理依賴。
app開發中遇到問題

  做app開發,特別是只有幾萬行代碼量的小項目,開發團隊也就幾個人,通常只用一個工程玩耍。隨着業務擴展,工程變得越來越大,代碼量大大增加,開發人數也多了,問題開始暴漏:改動一個地方往往影響到其他人的代碼,功能模塊耦合嚴重,構建速度慢....

  業界一些解決方法:
1.組件化,按功能拆分出各種組件,數據存儲、網絡層、日誌 等;
2.拆分業務,一個業務一個module;
3.業務插件化,一個業務一個工程,每個業務獨立編譯並運行.....

  因此,引入依賴管理是必不可少的。把各個模塊單獨編譯,部署上maven倉庫,主工程or業務工程通過maven、gradle引用這些依賴。這麼做還有好處,就是持續集成!某個模塊修改了,跑單元測試,通過後才放上倉庫。業務工程同步一下maven,萬一有問題,還可以在服務端回滾到上一個版本。

  所以我們希望通過搭建一個私有maven倉庫,來提高我們的開發效率。

二、 使用Nexus搭建 maven 私服

  Nexus是什麼?

  Nexus是一個基於maven的倉庫管理的社區項目.主要的使用場景就是可以在局域網搭建一個maven私服,用來部署第三方公共構件或者作爲遠程倉庫在該局域網的一個代理.簡單舉幾個例子就是:
  第三方Jar包可以放在nexus上,項目可以直接通過Url和路徑配置直接引用.方便進行統一管理.
  同時有多個項目在開發的時候,一些共用基礎模塊可以單獨抽取到nexus上,需要用的項目直接從nexus上拉取就行(基礎模塊的實現,維護和部署可以交給專門的人員,其他項目不用關心代碼實現,這樣也可以達到保證核心代碼不泄露).
  封閉開發的過程中開發機是不能上公網的,所以連接central repository和下載jar就比較麻煩,這時就可以用nexus搭建起來一個介於公網和局域網之間的橋樑

三、所需工具

四、使用Nexus搭建 maven 私庫

1、Nexus下載

  官網下載地址:https://www.sonatype.com/download-oss-sonatype,我的開發環境是Windows,我下載的是Nexus Repository Manager OSS 2.xx下面的 All platforms nexus-2.14.8-01-bundle.zip壓縮文件。

Nexus下載

 

2、Nexus啓動

  下載完成之後,解壓後進入D:\xpkit\other\nexus-2.14.8-01-bundle\nexus-2.14.8-01\bin\jsw\windows-x86-64,根據操作系統類型選擇文件夾,我選的是windows-x86-64文件夾,進入後可看到如下所示bat文件。

Nexus解壓後文件

  • 把zip包解壓到指定路徑如“D:\xpkit\other”
  • 運行cmd然後進入“D:\xpkit\other\nexus-2.14.8-01-bundle\nexus-2.14.8-01\bin\jsw\windows-x86-64”路徑
  • 運行nexus.bat install命令安裝nexus
  • 運行nexus.bat start命令啓動nexus
  • nexus.bat stop停止 nexus.bat restart重啓 nexus.bat uninstall卸載

  雙擊console-nexus.bat運行。再瀏覽器中輸入http://127.0.0.1:8081/nexus/,出現如下圖所示就代表nexus已經啓動成功。

Neuxs運行成功

3、登錄Nexus

  管理nexus要以管理員身份登錄,點擊首頁右上角的login輸入默認登錄名、密碼admin/admin123即可登錄。(如果是公司的局域網服務器換成局域網ip地址就可以了)。登錄成功就可以看到如下界面了:

nexus登錄成功

  這裏的倉庫分了四種類型:
  hosted(宿主倉庫):用來部署自己,第三方或者公共倉庫的構件
  proxy(代理倉庫):代理遠程倉庫
  virtual(虛擬倉庫):默認提供了一個 Central M1虛擬倉庫 用來將maven 2適配爲maven 1
  group(倉庫組):統一管理多個倉庫

  名詞解釋:
  Public Repositories: 倉庫組
  3rd party: 無法從公共倉庫獲得的第三方發佈版本的構件倉庫
  
Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫
  
Central:
用來代理maven中央倉庫中發佈版本構件的倉庫
  Central M1 shadow: 用於提供中央倉庫中M1格式的發佈版本的構件鏡像倉庫
  Codehaus Snapshots: 用來代理
  
CodehausMaven 倉庫的快照版本構件的倉庫
  
Releases:
用來部署管理內部的發佈版本構件的宿主類型倉庫
  Snapshots:用來部署管理內部的快照版本構件的宿主類型倉庫

4、創建倉庫

  這裏以建立hosted倉庫爲例簡單介紹Nexus在Android開發中的實際使用情況.點擊Repositories –> Add –> Hosted Repository,鍵入ID(部署項目的標識) Name等屬性,這裏需要注意的是,如果該倉庫有多次部署的情況的話,將policy設置爲allow redeploy,不然後續在部署的時候會出現403錯誤。這裏我點擊添加宿主類型的倉庫,在倉庫列表的下方會出現新增倉庫的配置,如下所示:

新增倉庫配置

  點擊save按鈕後就會在倉庫列表中看到剛纔新增的倉庫。

新增倉庫

五、上傳庫到Maven倉庫

1.首先新建一個module,選擇Android Library,類似下面這種結構

Android Library項目

 

2.項目的根目錄的gradle.properties配置一些相關信息,主要是一些全局的配置信息

gradle.properties

 

3.修改module對應的build.gradle文件,添加以下配置

build.gradle

 

  注意:記得在module對應的build.gradle文件上面添加maven依賴apply plugin: 'maven'

4.點擊uploadArchives進行編譯上傳

uploadArchives編譯上傳

 

5.去倉庫查看到剛剛上傳的庫文件

查看庫文件

 

六、在Android項目中應用Maven庫文件

1.新建一個項目,在項目的根目錄build.gradle配置如下:

項目的根目錄build.gradle配置

 

2.在app目錄下的build.gradle配置如下:

app目錄下的build.gradle配置

 

  至此配置就算結束了,就可以在Android項目中應用剛剛上傳的Maven庫文件了。

  Demo下載地址:https://github.com/XieXiePro/MavenDemo

參考:
  1,擁抱 Android Studio 之四:Maven 倉庫使用與私有倉庫搭建
  2,使用Gradle和Nexus 搭建私有maven倉庫
  3,Android的Nexus搭建Maven私有倉庫與使用
  4,Android業務組件化之Gradle和Sonatype Nexus搭建私有maven倉庫
  5,Maven私服並結合Android Studio(結合最新版的Nexus)配置詳解:



作者:Haraway
鏈接:https://www.jianshu.com/p/666c64e8854d
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章