前言
??什么是maven、gradle乙帮?
??Maven是一個(gè)項(xiàng)目管理和自動(dòng)構(gòu)建工具杜漠。
??Gradle是一個(gè)基于JVM的構(gòu)建工具,是一款通用靈活的構(gòu)建工具察净,支持maven驾茴, Ivy倉庫,支持傳遞性依賴管理氢卡,而不需要遠(yuǎn)程倉庫或者是pom.xml和ivy.xml配置文件沟涨,基于Groovy,build腳本使用Groovy編寫异吻。
??Android支持的Maven倉庫:
??mavenCentral 是最早的 maven 中央倉庫
??jcenter 是 Android Studio 0.8 版本起的默認(rèn) maven 中央倉庫
??本機(jī)的倉庫
??部署在內(nèi)網(wǎng)服務(wù)器的私有倉庫
一裹赴、為什么需要搭建maven私有倉庫?
??做java開發(fā)的童鞋對(duì)Maven一定不陌生诀浪;做android開發(fā)的童鞋棋返,用得最多的是gradle。其實(shí)gradle的第三方庫雷猪,也是放在maven倉庫上睛竣。
??對(duì)于第三方庫,大家基本都配置maven求摇、gradle從遠(yuǎn)程獲取射沟,估計(jì)很少直接下載jar放在工程里(對(duì)于沒有放在maven repository上的庫殊者,只能這么干)。這么做方便管理依賴验夯。
app開發(fā)中遇到問題
??做app開發(fā)猖吴,特別是只有幾萬行代碼量的小項(xiàng)目,開發(fā)團(tuán)隊(duì)也就幾個(gè)人挥转,通常只用一個(gè)工程玩耍海蔽。隨著業(yè)務(wù)擴(kuò)展,工程變得越來越大绑谣,代碼量大大增加党窜,開發(fā)人數(shù)也多了,問題開始暴漏:改動(dòng)一個(gè)地方往往影響到其他人的代碼借宵,功能模塊耦合嚴(yán)重幌衣,構(gòu)建速度慢....
??業(yè)界一些解決方法:
1.組件化,按功能拆分出各種組件壤玫,數(shù)據(jù)存儲(chǔ)泼掠、網(wǎng)絡(luò)層、日志 等垦细;
2.拆分業(yè)務(wù)择镇,一個(gè)業(yè)務(wù)一個(gè)module;
3.業(yè)務(wù)插件化括改,一個(gè)業(yè)務(wù)一個(gè)工程腻豌,每個(gè)業(yè)務(wù)獨(dú)立編譯并運(yùn)行.....
??因此,引入依賴管理是必不可少的嘱能。把各個(gè)模塊單獨(dú)編譯吝梅,部署上maven倉庫,主工程or業(yè)務(wù)工程通過maven惹骂、gradle引用這些依賴苏携。這么做還有好處,就是持續(xù)集成对粪!某個(gè)模塊修改了右冻,跑單元測(cè)試,通過后才放上倉庫著拭。業(yè)務(wù)工程同步一下maven纱扭,萬一有問題,還可以在服務(wù)端回滾到上一個(gè)版本儡遮。
??所以我們希望通過搭建一個(gè)私有maven倉庫乳蛾,來提高我們的開發(fā)效率。
二、 使用Nexus搭建 maven 私服
??Nexus是什么肃叶?
??Nexus是一個(gè)基于maven的倉庫管理的社區(qū)項(xiàng)目.主要的使用場(chǎng)景就是可以在局域網(wǎng)搭建一個(gè)maven私服,用來部署第三方公共構(gòu)件或者作為遠(yuǎn)程倉庫在該局域網(wǎng)的一個(gè)代理.簡單舉幾個(gè)例子就是:
??第三方Jar包可以放在nexus上,項(xiàng)目可以直接通過Url和路徑配置直接引用.方便進(jìn)行統(tǒng)一管理.
??同時(shí)有多個(gè)項(xiàng)目在開發(fā)的時(shí)候,一些共用基礎(chǔ)模塊可以單獨(dú)抽取到nexus上,需要用的項(xiàng)目直接從nexus上拉取就行(基礎(chǔ)模塊的實(shí)現(xiàn),維護(hù)和部署可以交給專門的人員,其他項(xiàng)目不用關(guān)心代碼實(shí)現(xiàn),這樣也可以達(dá)到保證核心代碼不泄露).
??封閉開發(fā)的過程中開發(fā)機(jī)是不能上公網(wǎng)的,所以連接central repository和下載jar就比較麻煩,這時(shí)就可以用nexus搭建起來一個(gè)介于公網(wǎng)和局域網(wǎng)之間的橋梁
三蹂随、所需工具
四、使用Nexus搭建 maven 私庫
1因惭、Nexus下載
??官網(wǎng)下載地址:https://www.sonatype.com/download-oss-sonatype岳锁,我的開發(fā)環(huán)境是Windows,我下載的是Nexus Repository Manager OSS 2.xx下面的 All platforms nexus-2.14.8-01-bundle.zip壓縮文件筛欢。
2浸锨、Nexus啟動(dòng)
??下載完成之后唇聘,解壓后進(jìn)入D:\xpkit\other\nexus-2.14.8-01-bundle\nexus-2.14.8-01\bin\jsw\windows-x86-64版姑,根據(jù)操作系統(tǒng)類型選擇文件夾,我選的是windows-x86-64文件夾迟郎,進(jìn)入后可看到如下所示bat文件剥险。
- 把zip包解壓到指定路徑如“D:\xpkit\other”
- 運(yùn)行cmd然后進(jìn)入“D:\xpkit\other\nexus-2.14.8-01-bundle\nexus-2.14.8-01\bin\jsw\windows-x86-64”路徑
- 運(yùn)行nexus.bat install命令安裝nexus
- 運(yùn)行nexus.bat start命令啟動(dòng)nexus
- nexus.bat stop停止 nexus.bat restart重啟 nexus.bat uninstall卸載
??雙擊console-nexus.bat運(yùn)行。再瀏覽器中輸入http://127.0.0.1:8081/nexus/,出現(xiàn)如下圖所示就代表nexus已經(jīng)啟動(dòng)成功宪肖。
3表制、登錄Nexus
??管理nexus要以管理員身份登錄,點(diǎn)擊首頁右上角的login輸入默認(rèn)登錄名控乾、密碼admin/admin123即可登錄么介。(如果是公司的局域網(wǎng)服務(wù)器換成局域網(wǎng)ip地址就可以了)。登錄成功就可以看到如下界面了:
??這里的倉庫分了四種類型:
??hosted(宿主倉庫):用來部署自己,第三方或者公共倉庫的構(gòu)件
??proxy(代理倉庫):代理遠(yuǎn)程倉庫
??virtual(虛擬倉庫):默認(rèn)提供了一個(gè) Central M1虛擬倉庫 用來將maven 2適配為maven 1
??group(倉庫組):統(tǒng)一管理多個(gè)倉庫
??名詞解釋:
??Public Repositories: 倉庫組
??3rd party: 無法從公共倉庫獲得的第三方發(fā)布版本的構(gòu)件倉庫
??Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構(gòu)件倉庫
??Central: 用來代理maven中央倉庫中發(fā)布版本構(gòu)件的倉庫
??Central M1 shadow: 用于提供中央倉庫中M1格式的發(fā)布版本的構(gòu)件鏡像倉庫
??Codehaus Snapshots: 用來代理
??CodehausMaven 倉庫的快照版本構(gòu)件的倉庫
??Releases: 用來部署管理內(nèi)部的發(fā)布版本構(gòu)件的宿主類型倉庫
??Snapshots:用來部署管理內(nèi)部的快照版本構(gòu)件的宿主類型倉庫
4蜕衡、創(chuàng)建倉庫
??這里以建立hosted倉庫為例簡單介紹Nexus在Android開發(fā)中的實(shí)際使用情況.點(diǎn)擊Repositories –> Add –> Hosted Repository壤短,鍵入ID(部署項(xiàng)目的標(biāo)識(shí)) Name等屬性,這里需要注意的是,如果該倉庫有多次部署的情況的話,將policy設(shè)置為allow redeploy,不然后續(xù)在部署的時(shí)候會(huì)出現(xiàn)403錯(cuò)誤。這里我點(diǎn)擊添加宿主類型的倉庫慨仿,在倉庫列表的下方會(huì)出現(xiàn)新增倉庫的配置久脯,如下所示:
??點(diǎn)擊save按鈕后就會(huì)在倉庫列表中看到剛才新增的倉庫。
五镰吆、上傳庫到Maven倉庫
1.首先新建一個(gè)module帘撰,選擇Android Library,類似下面這種結(jié)構(gòu)
2.項(xiàng)目的根目錄的gradle.properties配置一些相關(guān)信息万皿,主要是一些全局的配置信息
3.修改module對(duì)應(yīng)的build.gradle文件摧找,添加以下配置
??注意:記得在module對(duì)應(yīng)的build.gradle文件上面添加maven依賴apply plugin: 'maven'
4.點(diǎn)擊uploadArchives進(jìn)行編譯上傳
5.去倉庫查看到剛剛上傳的庫文件
六、在Android項(xiàng)目中應(yīng)用Maven庫文件
1.新建一個(gè)項(xiàng)目牢硅,在項(xiàng)目的根目錄build.gradle配置如下:
2.在app目錄下的build.gradle配置如下:
??至此配置就算結(jié)束了慰于,就可以在Android項(xiàng)目中應(yīng)用剛剛上傳的Maven庫文件了。
??Demo下載地址:https://github.com/XieXiePro/MavenDemo
參考:
??1,擁抱 Android Studio 之四:Maven 倉庫使用與私有倉庫搭建
??2,使用Gradle和Nexus 搭建私有maven倉庫
??3,Android的Nexus搭建Maven私有倉庫與使用
??4,Android業(yè)務(wù)組件化之Gradle和Sonatype Nexus搭建私有maven倉庫
??5,Maven私服并結(jié)合Android Studio(結(jié)合最新版的Nexus)配置詳解: