Android Maven私有倉庫搭建筆記

前言

??什么是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壓縮文件筛欢。

Nexus下載

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文件剥险。

Nexus解壓后文件
  • 把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)成功宪肖。

Neuxs運(yùn)行成功
3表制、登錄Nexus

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

nexus登錄成功

??這里的倉庫分了四種類型:
??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)

Android Library項(xiàng)目

2.項(xiàng)目的根目錄的gradle.properties配置一些相關(guān)信息万皿,主要是一些全局的配置信息

gradle.properties

3.修改module對(duì)應(yīng)的build.gradle文件摧找,添加以下配置

build.gradle

??注意:記得在module對(duì)應(yīng)的build.gradle文件上面添加maven依賴apply plugin: 'maven'

4.點(diǎn)擊uploadArchives進(jìn)行編譯上傳

uploadArchives編譯上傳

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

查看庫文件

六、在Android項(xiàng)目中應(yīng)用Maven庫文件

1.新建一個(gè)項(xiàng)目牢硅,在項(xiàng)目的根目錄build.gradle配置如下:

項(xiàng)目的根目錄build.gradle配置

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

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)配置詳解:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唤衫,一起剝皮案震驚了整個(gè)濱河市婆赠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖休里,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛆挫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妙黍,警方通過查閱死者的電腦和手機(jī)悴侵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拭嫁,“玉大人可免,你說我怎么就攤上這事∽鲈粒” “怎么了浇借?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怕品。 經(jīng)常有香客問我妇垢,道長,這世上最難降的妖魔是什么肉康? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任闯估,我火速辦了婚禮,結(jié)果婚禮上吼和,老公的妹妹穿的比我還像新娘涨薪。我一直安慰自己,他們只是感情好炫乓,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布刚夺。 她就那樣靜靜地躺著,像睡著了一般厢岂。 火紅的嫁衣襯著肌膚如雪光督。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天塔粒,我揣著相機(jī)與錄音结借,去河邊找鬼。 笑死卒茬,一個(gè)胖子當(dāng)著我的面吹牛船老,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播圃酵,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼柳畔,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了郭赐?” 一聲冷哼從身側(cè)響起薪韩,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后俘陷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罗捎,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年拉盾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桨菜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捉偏,死狀恐怖倒得,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夭禽,我是刑警寧澤霞掺,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站驻粟,受9級(jí)特大地震影響根悼,放射性物質(zhì)發(fā)生泄漏凶异。R本人自食惡果不足惜蜀撑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剩彬。 院中可真熱鬧酷麦,春花似錦、人聲如沸喉恋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轻黑。三九已至糊肤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間氓鄙,已是汗流浹背馆揉。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抖拦,地道東北人升酣。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像态罪,于是被迫代替她去往敵國和親噩茄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容