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
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。