上一篇簡(jiǎn)單介紹了Maven倉(cāng)庫(kù),里面提到了上傳構(gòu)件到j(luò)center比maven central簡(jiǎn)單一些,但是實(shí)際上操作下來(lái),還是有一些坑的,主要是gradle不斷升級(jí)和jcenter的改版,網(wǎng)上看到的教程跟目前的實(shí)際環(huán)境往往不一致。寫(xiě)這篇文章時(shí)我從零創(chuàng)建了一個(gè)demo項(xiàng)目并且成功發(fā)布到j(luò)center,demo項(xiàng)目也上傳到了github (https://github.com/dfqin/jcenterDemo)。
1. JFrog Bintray 賬號(hào)注冊(cè)
打開(kāi)JFrog Bintray 首頁(yè),點(diǎn)擊右邊紅色箭頭標(biāo)識(shí)的入口注冊(cè),不要點(diǎn)擊左邊的按鈕,左邊的按鈕是30天免費(fèi)試用,只能把庫(kù)傳到bintray,不能發(fā)布到j(luò)center,很多人這里被坑了。

后面注冊(cè)沒(méi)什么特殊的,也可以直接選擇第三方登錄,我是直接選擇的使用github登錄的。登錄后點(diǎn)擊“Add New Repository”創(chuàng)建一個(gè)新的倉(cāng)庫(kù),name這里寫(xiě)maven,理論上這里可以任意命名的,但是如果使用bintray-release插件上傳,插件里面寫(xiě)死了倉(cāng)庫(kù)名為maven,就會(huì)因?yàn)檎也坏絺}(cāng)庫(kù)名報(bào)錯(cuò),很多人這里被坑到了,用其他方式上傳就無(wú)所謂了。

下面我們找到自己用戶名,點(diǎn)擊小箭頭會(huì)展開(kāi)一個(gè)菜單,在里面選擇Edit Profile,然后在新的頁(yè)面找到API Key,后面我們上傳庫(kù)時(shí)需要使用這個(gè)值。

2. 上傳庫(kù)到倉(cāng)庫(kù)
上傳倉(cāng)庫(kù)有多種方式,最出名的是bintray-release插件和gradle-bintray-plugin插件,第一個(gè)比較簡(jiǎn)潔,只需要配置幾行腳本就好了,這里我采用的是第一種。網(wǎng)上例子很多采用的是第二種,需要配置很多腳本,之前我參考這篇文章使用過(guò)第二種的方法。
首先我們要有一個(gè)Android項(xiàng)目,這里我創(chuàng)建了一個(gè)demo項(xiàng)目上傳到github了。項(xiàng)目有一個(gè)library Module表示用來(lái)發(fā)布的庫(kù),還有一個(gè)application 主Module用來(lái)運(yùn)行和調(diào)試自己的library。在我們項(xiàng)目的根build.gradle里的dependencies中添加如下代碼引入插件。
classpath 'com.novoda:bintray-release:0.5.0'
然后在library Module的build.gradle中添加
publish {
userOrg = 'dfqin2' // bintray 上注冊(cè)的用戶名
groupId = 'com.dfqin.logutil' // 包名
artifactId = 'mylog' // library名
publishVersion = '1.0.0' // 版本號(hào)
desc = 'just for demo'
website = 'https://github.com/dfqin/jcenterDemo'
}
只需要這幾行配置就完成了,是不是很簡(jiǎn)潔?下面我們運(yùn)行如下命令讓項(xiàng)目編譯并上傳的倉(cāng)庫(kù):
./gradlew clean build bintrayUpload -PbintrayUser=dfqin2 -PbintrayKey=you-api-key -PdryRun=false
其中dfqin2替換成自己前面在JFrog Bintray上注冊(cè)的用戶名,you-api-key使用上面的API Key替換。腳本執(zhí)行完畢如果顯示成功的話,就可以去網(wǎng)站上查看自己的庫(kù)了。我遇到過(guò)兩中報(bào)錯(cuò),第一種是
Unable to load class 'org.gradle.api.internal.component.Usage'
后面排查是由于項(xiàng)目gradle使用的是3.0的版本,bintray-release的版本號(hào)太低不兼容3.0的gradle,我把bintray-release版本號(hào)提升就解決了。
第二個(gè)錯(cuò)誤是:
HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]
這個(gè)就是我前面提到的,倉(cāng)庫(kù)名必須為maven的原因,我的配置它默認(rèn)會(huì)往dfqin2/maven/mylog上面推送,我開(kāi)始創(chuàng)建的倉(cāng)庫(kù)名為mylog,路徑為dfqin2/mylog/,所以腳本報(bào)錯(cuò)找不到maven。
3. 發(fā)布
這時(shí)候在JFrog Bintray網(wǎng)站上刷新,就可以看到自己上傳的庫(kù),點(diǎn)開(kāi)后在詳情頁(yè)面找到Add to JCenter按鈕,點(diǎn)擊后在新頁(yè)面填寫(xiě)一下描述后發(fā)布,過(guò)一兩天后審核通過(guò)就發(fā)布完成。


4. 同步到maven central
在自己的庫(kù)詳情頁(yè)面,點(diǎn)擊Maven Central,在彈窗里面點(diǎn)擊"Click here to get it included"即可。
