隨便巴拉湊字?jǐn)?shù)
之前寫了一篇使用nexus搭建私人maven倉庫的博客(然鵝還沒好),那時(shí)候幾句話就弄好了真的好激動啊,噼里啪啦把自己的一些庫往上加,提交,完美,還好開心寫了一篇博客記錄下來了,寫完泡了一杯茶,松松喝一口,感覺世界是多么的美好。

有一天,公司突然有個(gè)功能,似曾相識,哦對,前幾天剛搞上去的庫里面有,心里竊喜,趕緊博客開出來,代碼一頓拷貝,當(dāng)看到localhost我好像意識到了什么。。。沒錯(cuò),那個(gè)是本地環(huán)境啊,我那個(gè)nexu倉庫提交的在家里的電腦呢,逗我呢這里怎么可能拿的到。。。

好了,湊字?jǐn)?shù)結(jié)束
那有沒有啥方法可以一個(gè)地方提交到處可以玩呢?當(dāng)然是有哇,不然網(wǎng)上開源項(xiàng)目咋就一句話依賴就能用的呢。之前看了一個(gè)jcenter倉庫,為了提交一個(gè)項(xiàng)目上去,要申請好多的東西,而且一路專業(yè)英文,好像看了一篇是英文的教程,看完我覺得自己被英文字母淹死了,這個(gè)門檻相對較高,當(dāng)然大佬大屌們應(yīng)該是輕松容易看懂的,像我這種渣渣英文,望而卻步了。今天研究了幾篇文章,說是可以用github來作為maven倉庫的,看了看,效果還不錯(cuò),我就自己實(shí)踐下,順便優(yōu)化了一丟丟,我也來講講吧。

開始動手搞起來
我們創(chuàng)建一個(gè)maven倉庫是為了提交我們積累的aar庫,而且這個(gè)庫可能還會一直更新維護(hù)添加,所以我們希望到處可添加,到處可測試,到處可修改,到處可維護(hù)(當(dāng)然到處指的是你自己到處可以操作,不是別人也可以到處操作),所以我們希望github上面的倉庫不僅僅只是單一存aar文件相關(guān),還包含源碼,包含測試用的app源碼,那怎么辦?把項(xiàng)目跟源碼都提交上去咯,依賴的話只是依賴到maven倉庫里面的aar文件而已,所以最后的github倉庫的目錄是醬紫的

接下來開始動手了
創(chuàng)建一個(gè)簡單的安卓項(xiàng)目(略)
創(chuàng)建一個(gè)module安卓庫作為要提交的aar庫(略)
github創(chuàng)建一個(gè)倉庫(略)
-
github倉庫與剛才創(chuàng)建的安卓項(xiàng)目建立關(guān)聯(lián)(略)
以上都只是寫簡單的步驟,連拿來湊字?jǐn)?shù)都不想敲(懶),接下來是重點(diǎn)了,后面的同學(xué)醒醒,注意聽。
劃重點(diǎn),期末必考 step1 在庫module的build.gradle文件里面添加
apply plugin: 'maven'
- step 2 倉庫提交的配置
首先要在本地生成相關(guān)文件,同樣在庫module的build.gradle文件里面添加
uploadArchives {
repositories.mavenDeployer {
//maven 本地文件地址
def mavenLib = file(getProperty('mavenPath'))
repository(url: "file://${mavenLib.absolutePath}")
pom.project {
version android.defaultConfig.versionName
groupId GROUDID
artifactId ARTIFACTID
}
}
}
注意,以上代碼跟android目錄同級別
在項(xiàng)目的gradle.properties文件里面添加參數(shù)配置(其實(shí)也可以直接在上面的代碼里面直接添加,這就像安卓布局里面直接寫文字跟配置在string資源里面一樣)
mavenPath = ..
GROUDID=com.ddstar
ARTIFACTID = maveLib
啰嗦兩句,mavenPath 這個(gè)名字隨便寫,記得在第二步的 file(getProperty('mavenPath'))配置相對應(yīng)的參數(shù)名就好了,兩個(gè).. 表示在項(xiàng)目的最外層目錄,groupId 跟artifactId 配置后的結(jié)果就是最后面我們需要依賴的目錄為groupId:artifactId:version的形式,我這邊就是com.ddstar:maveLib:1.0(最后面版本號看項(xiàng)目的版本名字配置)
以上配置結(jié)束,同步一下,如下圖就會出現(xiàn)

- step3 生成aar文件 和提交倉庫相關(guān)文件
在需要生成aar的module里面添加一個(gè)簡單測試類,并條件簡單方法,生成aar文件,然后點(diǎn)擊上圖的uploadArchives,如果配置沒錯(cuò)的話,會有如下日志,并再如下目錄里能看到文件
BUILD SUCCESSFUL in 0s
25 actionable tasks: 1 executed, 24 up-to-date
16:29:40: Task execution finished 'uploadArchives'.

-
step4 提交到github
剛才我們已經(jīng)將該項(xiàng)目于github倉庫關(guān)聯(lián),現(xiàn)在只要增加倉庫文件所在整個(gè)目錄就可以了,將倉庫文件目錄整個(gè)添加到github上,然后提交,push,之后能在瀏覽器上打開看到我們剛才添加的所有文件
提交到github
成功了一半了,休息下。。。
看個(gè)劇吧
倉庫依賴
上面是將aar庫文件生成的Maven殘酷提交到github,接下來是怎么依賴
- step1 倉庫地址
倉庫地址的格式是
https://raw.githubusercontent.com/{username}/{projeceName}/{branch}
|
|
我們的-->https://raw.githubusercontent.com/DDStar/GithubMavenDemo/master
- step 2項(xiàng)目依賴
在項(xiàng)目級別的build.gradle里面添加配置
allprojects {
repositories {
google()
jcenter()
maven{//添加以下配置
url 'https://raw.githubusercontent.com/DDStar/GithubMavenDemo/master'
}
}
- step3 測試項(xiàng)目依賴
最后 再測試用的項(xiàng)目里面添加依賴
implementation 'com.ddstar:maveLib:1.0'
同步下依賴成功以后,就可以調(diào)用庫里面的代碼了

最后注意
注意1
我們是使用git管理代碼的,所有生成的那個(gè)maven倉庫文件目錄最好不要隨意刪除,不然這次新生成一個(gè)版本,本地把之前的版本都刪掉,提交代碼以后github上面的以前版本都會被刪掉,這樣造成依賴之前版本的項(xiàng)目都會有問題(開發(fā)的時(shí)候)
注意2
aar庫module里面最好只保留項(xiàng)目相關(guān)的東西。我第一次提交是包含androidtest和test目錄,提交完測試項(xiàng)目依賴的話就依賴不了,可能是測試項(xiàng)目也有依賴的緣故,這個(gè)還不是很確定
注意3
每次提交新版本都改一下版本名,才會提交新的版本,不然會覆蓋原來舊版
結(jié)束的字體要比其他的大,下課



