本博客為個(gè)人原創(chuàng),轉(zhuǎn)載需在明顯位置注明出處
Maven是什么####
Maven是一個(gè)項(xiàng)目管理和構(gòu)建自動(dòng)化工具。這么說可能有點(diǎn)籠統(tǒng)抽象,具體一點(diǎn)就是,我們可以利用Maven這個(gè)管理工具來打包(包括apk,jar,aar等),生成javadoc,上傳到遠(yuǎn)程倉庫,依賴遠(yuǎn)程倉庫中的library等。
為什么不用Gradle####
看到上面的定義,有人會(huì)有疑問了,這些Gradle都可以做啊,為什么還要那么麻煩換成Maven來管理?說說我個(gè)人觀點(diǎn)的轉(zhuǎn)變,早在兩年前我就開始接觸Android Studio和Gradle構(gòu)建了,但是你要問我為什么用Gradle來構(gòu)建工程,除了一臉懵逼我什么也表達(dá)不出來。因?yàn)镚radle是Android Studio集成的構(gòu)建工具,是Google推薦的,所以它一定是好的,完美的。之前我也一直是這么認(rèn)為的,直到有一天,公司項(xiàng)目需要用Maven私服倉庫來管理,記得當(dāng)時(shí)由于上傳的問題,我找到了公司的資深配管,聊著聊著就聊到了構(gòu)建工具的問題。以她多年的配管經(jīng)驗(yàn)來講,Gradle雖然是官方推薦,但并不是一個(gè)好工具,相對(duì)來說,她更傾向于我們跟Server開發(fā)一樣,使用Maven來進(jìn)行構(gòu)建管理。當(dāng)時(shí)她講了一大堆理由,不好意思我當(dāng)時(shí)聽得是一臉懵逼,現(xiàn)在也記不太清楚了,后來我就換成Maven來進(jìn)行項(xiàng)目構(gòu)建管理。
Maven倉庫####
Maven除了打包構(gòu)建工程之外,還有一個(gè)倉庫的概念,我們先來看張圖:

用Maven依賴v4包為例,結(jié)合上圖分步驟講解一下Maven倉庫的工作流程:
每一位用戶的電腦都是一個(gè)Maven倉庫,因?yàn)镸aven安裝成功之后會(huì)在本地創(chuàng)建一個(gè)本地倉庫做緩存,只要下載成功的包就會(huì)直接從緩存里面去取(緩存的路徑和artifactId,groudId和version有關(guān),后續(xù)篇章我會(huì)詳細(xì)講解)
我們通過compile 'com.android.support:support-v4:24.0.0'配置來依賴v4包,首先Maven識(shí)別出你需要依賴的是24.0.0的v4包,第一步它會(huì)先在本地倉庫中尋找,若找到了,直接依賴無需下載,如果未找到,就會(huì)去公司的Maven私服倉庫下載(注1:有些公司有私服并且私服代理了中央倉庫,有些則是直接依賴的中央倉庫;注2:遠(yuǎn)程倉庫的地址在/.m2/settings.xml文件中配置)
下載成功的v4包會(huì)按一定的路徑規(guī)律存放在本地倉庫中,然后建立依賴關(guān)系,以后再通過Maven依賴同樣版本的v4包,就可以直接從本地倉庫中獲取,不需要再次下載
上述是用Maven依賴時(shí)的工作流程,打包上傳稍有一點(diǎn)不一樣,根據(jù)不同的Maven命令執(zhí)行不同的操作,打包(mvn package)是在工程目錄下創(chuàng)建一個(gè)target文件夾,所有打包生成的文件都會(huì)存在這個(gè)target路徑下,安裝(mvn install)是將打好的包存入本地倉庫,上傳(mvn deploy)是將打好的包上傳至遠(yuǎn)程倉庫,倉庫地址和用戶名密碼是在settings.xml文件中配置。
你需要的準(zhǔn)備工作####
Maven的安裝,環(huán)境變量的配置(說白了Maven是一個(gè)工具,系統(tǒng)是不自帶的,需要安裝并且配置好環(huán)境變量)
Maven遠(yuǎn)程倉庫的創(chuàng)建(如果你只是自己打包自己用,那遠(yuǎn)程倉庫可要可不要,如果是團(tuán)隊(duì)協(xié)作,那么遠(yuǎn)程倉庫必不可少,有條件的可以搭一個(gè)私服來使用)
如果你不知道如何準(zhǔn)備,請(qǐng)咨詢度娘和Google。好了,這篇文章就介紹到這,下一篇我們Hello World再見。