如何上傳library到j(luò)center

如何上傳library到j(luò)center
我相信你已經(jīng)知道了倉庫系統(tǒng)的大體工作原理∷腥現(xiàn)在我們來開始最重要的部分:上傳。這個任務(wù)和如何上傳library文件到http://jcenter.bintray.com一樣簡單指巡。如果做到,這個library就算發(fā)布了灌灾。好吧儒搭,有兩個需要考慮:如何創(chuàng)建aar文件以及如何上傳構(gòu)建的文件到倉庫撵枢。
雖然需要若干步驟民晒,但是我還是想強(qiáng)調(diào)這事并不復(fù)雜,因?yàn)橐呀?jīng)準(zhǔn)備好了所有事情锄禽。整個過程如下圖:


因?yàn)榧?xì)節(jié)比較多潜必,我分為7部分,一步一步的詳細(xì)解釋清楚沃但。
第一部分:在bintray上創(chuàng)建package
首先磁滚,你需要在bintray上創(chuàng)建一個package。為此宵晚,你需要一個bintray賬號垂攘,并在網(wǎng)站上創(chuàng)建一個package。
第一步:在bintray.com上注冊一個賬號淤刃。(注冊過程很簡單晒他,自己完成)
第二步:完成注冊之后,登錄網(wǎng)站逸贾,然后點(diǎn)擊maven陨仅。

第三步:點(diǎn)擊Add New Package津滞,為我們的library創(chuàng)建一個新的package。

第四步:輸入所有需要的信息

雖然如何命名包名沒有什么限定灼伤,但是也有一定規(guī)范触徐。所有字母應(yīng)該為小寫,單詞之間用-分割狐赡,比如撞鹉,fb-like。
當(dāng)每項都填完之后颖侄,點(diǎn)擊Create Package孔祸。
第五步:網(wǎng)頁將引導(dǎo)你到 Package編輯頁面。點(diǎn)擊 Edit Package文字下的Package名字发皿,進(jìn)入Package詳情界面崔慧。

完工!現(xiàn)在你有了自己在Bintray上的Maven倉庫穴墅,可以準(zhǔn)備上傳library到上面了惶室。

Bintray賬戶的注冊就完成了。下一步是Sonatype玄货,Maven Central 的提供者皇钞。

第二部分:為Maven Central創(chuàng)建個Sonatype帳號
注:如果你不打算把library上傳到Maven Central,可以跳過第二和第三部分松捉。不過我建議你不要跳過夹界,因?yàn)槿匀挥性S多開發(fā)者在使用這個倉庫。
和jcenter一樣隘世,如果你想通過Maven Central,貢獻(xiàn)自己的library可柿,你需要在提供者的網(wǎng)站Sonatype上注冊一個帳號。
你需要知道的就是這個帳號丙者,你需要在Sonatype網(wǎng)站上創(chuàng)建一個IRA Issue Tracker 帳號复斥。請到Sonatype Dashboard 注冊這個帳號。
完成之后械媒。你需要請求得到貢獻(xiàn)library到Maven Central的權(quán)限目锭。不過這個過程對我來說有點(diǎn)無厘頭,因?yàn)槟阈枰龅木褪窃贘IRA中創(chuàng)建一個issue纷捞,讓它們允許你上傳匹配Maven Central提供的GROUP_ID的library痢虹。
要創(chuàng)建上述所講到的issue,訪問Sonatype Dashboard主儡,用創(chuàng)建的帳號登錄奖唯。然后點(diǎn)擊頂部菜單的Create。
填寫如下信息:
Project: Community Support - Open Source Project Repository Hosting
Issue Type: New Project
Summary: 你的 library名稱的概要缀辩,比如The Cheese Library臭埋。
Group Id: 輸入根GROUP_ID踪央,比如,com.inthecheeselibrary 瓢阴。一旦批準(zhǔn)之后畅蹂,每個以com.inthecheeselibrary開始的library都允許被上傳到倉庫,比如com.inthecheeselibrary.somelib荣恐。
Project URL: 輸入任意一個你想貢獻(xiàn)的library的URL液斜,比如, https://github.com/nuuneoi/FBLikeAndroid叠穆。
SCM URL: 版本控制的URL少漆,比如 https://github.com/nuuneoi/FBLikeAndroid.git

其余的不用管硼被,然后點(diǎn)擊Create∈舅穑現(xiàn)在是最難的部分...耐心等待...平均大概1周左右,你會獲準(zhǔn)把自己的library分享到 Maven Central嚷硫。
最后一件事是在Bintray Profile的帳戶選項中填寫自己的Sonatype OSS用戶名检访。


點(diǎn)擊Update,完成仔掸。
第三部分:啟用bintray里的自動注冊
就如我上面提到的脆贵,我們可以通過jcenter上傳library到Maven Central ,不過我們需要先注冊這個library起暮。bintray提供了通過用戶界面讓library一旦上傳后自動注冊的機(jī)制卖氨。
第一步是使用下面的命令行產(chǎn)生一個key。(如果你用的是windows负懦,請在cygwin下做這件事情)
gpg --gen-key

有幾個必填項筒捺。部分可以采用默認(rèn)值,但是某些項需要你自己輸入恰當(dāng)?shù)膬?nèi)容密似,比如凭涂,你的真實(shí)名字问裕,密碼 等等。
創(chuàng)建了key之后鸠删,調(diào)用如下的命令查看被創(chuàng)建key的信息贫导。
gpg --list-keys

如果沒沒問題的話抛猫,可以看到下面的信息:
pub 2048R/01ABCDEF 2015-03-07uid Sittiphol Phanvilai yourmail@email.comsub 2048R/98765432 2015-03-07

現(xiàn)在你需要把key上傳到keyserver讓它發(fā)揮作用。為此孩灯,請調(diào)用如下的命令并且將其中的PUBLIC_KEY_ID替換成上面pub一行中2048R/ 后面的 8位16進(jìn)制值闺金,譬如本例是01ABCDEF。
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PUBLIC_KEY_ID

然后峰档,使用如下的命令以ASCII形式導(dǎo)出公共和私有的key败匹,請將yourmail@email.com替換成你前面用于創(chuàng)建key的email寨昙。
gpg -a --export yourmail@email.com > public_key_sender.ascgpg -a --export-secret-key yourmail@email.com > private_key_sender.asc

打開Bintray的Edit Profile頁面點(diǎn)擊GPG 注冊。分別在Public Key和 Private Key中填入上一步導(dǎo)出的public_key_sender.asc和 private_key_sender.asc文件中的內(nèi)容掀亩。


點(diǎn)擊Update保存這些key舔哪。
最后一步就是啟用自動注冊。到Bintray的主頁點(diǎn)擊maven槽棍。

點(diǎn)擊編輯

勾選中GPG Sign uploaed files automatically以啟用自動注冊捉蚤。

點(diǎn)擊Update保存這些步驟。完成×镀撸現(xiàn)在只需點(diǎn)擊一下缆巧,每個上傳到我們Maven倉庫的東西都會自動注冊并做好轉(zhuǎn)向Maven Central 。
請注意這是一次性的操作豌拙,以后創(chuàng)建的每一個library都要應(yīng)用此操作陕悬。
Bintray和Maven Central 已經(jīng)準(zhǔn)備好了。現(xiàn)在轉(zhuǎn)到Android Studio部分按傅。
第四部分:準(zhǔn)備一個Android Studio項目
很多情況下墩莫,我們需要同時上傳一個以上的library到倉庫,也可能不需要上傳東西逞敷。因此我建議最好將每部分分成一個Module狂秦。最好分成兩個module,一個Application Module一個Library Module推捐。Application Module用于展示庫的用法裂问,Library Module是library的源代碼。如果你的項目有一個以上的library牛柒,盡管創(chuàng)建另外的module:1個 module對應(yīng)1 個library堪簿。



我相信大家知道如何創(chuàng)建一個新的module,因此就不會深入講解這個問題了皮壁。其實(shí)很簡單椭更,基本就是選擇creating an Android Library module ,然后就完了蛾魄。



下一步是把bintray插件應(yīng)用在項目中虑瀑。我們需要修改項目的build.gradle文件中的依賴部分,如下:
dependencies { classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' classpath 'com.github.dcendents:android-maven-plugin:1.2'}

有一點(diǎn)非常重要滴须,那就是gradle build tools的版本設(shè)置成1.1.2以上舌狗,因?yàn)橐郧暗陌姹居袊?yán)重的bug,我們將使用的是最新的版本1.2.3扔水。
接下來我們將修改local.properties痛侍。在里面定義api key的用戶名以及被創(chuàng)建key的密碼,用于bintray的認(rèn)證魔市。之所以要把這些東西放在這個文件是因?yàn)檫@些信息時比較敏感的主届,不應(yīng)該到處分享赵哲,包括版本控制里面。幸運(yùn)的是在創(chuàng)建項目的時候local.properties文件就已經(jīng)被添加到.gitignore了君丁。因此這些敏感數(shù)據(jù)不會被誤傳到git服務(wù)器枫夺。
下面是要添加的三行代碼:
bintray.user=YOUR_BINTRAY_USERNAMEbintray.apikey=YOUR_BINTRAY_API_KEYbintray.gpg.password=YOUR_GPG_PASSWORD

bintray username 放在第一行, API Key放在第二行谈截, API Key可以在Edit Profile頁面的API Key 選項卡中找到筷屡。
最后一行是創(chuàng)建 GPG key的密碼。保存并關(guān)閉這個文件簸喂。
最后要修改的是module的build.gradle文件毙死。注意前面修改的是項目的build.gradle文件。打開它喻鳄,在apply plugin: 'com.android.library'之后添加這幾行扼倘,如下:

復(fù)制代碼

pply plugin: 'com.android.library' ext { bintrayRepo = 'maven' bintrayName = 'fb-like' publishedGroupId = 'com.inthecheesefactory.thecheeselibrary' libraryName = 'FBLike' artifact = 'fb-like' libraryDescription = 'A wrapper for Facebook Native Like Button (LikeView) on Android' siteUrl = 'https://github.com/nuuneoi/FBLikeAndroid' gitUrl = 'https://github.com/nuuneoi/FBLikeAndroid.git' libraryVersion = '0.9.3' developerId = 'nuuneoi' developerName = 'Sittiphol Phanvilai' developerEmail = 'sittiphol@gmail.com' licenseName = 'The Apache Software License, Version 2.0' licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' allLicenses = ["Apache-2.0"]}
復(fù)制代碼

bintrayRepo使用默認(rèn)的,即maven除呵。bintrayName修改成你上面創(chuàng)建的 package name再菊。其余的項也修改成和你library信息相匹配的值。有了上面的腳本颜曾,每個人都能通過下面的一行g(shù)radle腳本使用這個library纠拔。
compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3‘

最后在文件的后面追加兩行如下的代碼來應(yīng)用兩個腳本,用于構(gòu)建library文件和上傳文件到bintray(為了方便泛豪,我直接使用了github上連接到相關(guān)文件的鏈接):
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'

完成稠诲!你的項目現(xiàn)在設(shè)置好了,準(zhǔn)備上傳到bintray吧诡曙!

第五部分:把library上傳到你的bintray空間
現(xiàn)在是上傳library到你自己的bintray倉庫上的時候了臀叙。請到Android Studio的終端(Terminal)選項卡。



第一步是檢查代碼的正確性价卤,以及編譯library文件(aar劝萤,pom等等),輸入下面的命令:
gradlew install

如果沒有什么問題慎璧,會顯示:
BUILD SUCCESSFUL

現(xiàn)在我們已經(jīng)成功一半了床嫌。下一步是上傳編譯的文件到bintray,使用如下的命令:
gradlew bintrayUpload

如果顯示如下你就大喊一聲eureka吧炸卑!
SUCCESSFUL

在bintray的網(wǎng)頁上檢查一下你的package既鞠。你會發(fā)現(xiàn)在版本區(qū)域的變化。


點(diǎn)擊進(jìn)去盖文,進(jìn)入Files選項卡,你會看見那里有我們所上傳的library文件蚯姆。

恭喜五续,你的library終于放在了互聯(lián)網(wǎng)上洒敏,任何人都可以使用了!
不過也別高興過頭疙驾,library現(xiàn)在仍然只是在你自己的Maven倉庫凶伙,而不是在jcenter上。如果有人想使用你的library它碎,他必須定義倉庫的url函荣,如下:
復(fù)制代碼

repositories { maven { url 'https://dl.bintray.com/nuuneoi/maven/' }} ... dependencies { compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'}
復(fù)制代碼

譯者注:前面都沒怎么看懂,看到上面的代碼之后一下子全懂了扳肛,呵呵傻挂。
你可以在bintray的web界面找到自己Maven倉庫的url,或者直接吧nuuneoi替換成你的bintray用戶名(因?yàn)榍懊娌糠制鋵?shí)都是一樣的)挖息。我還建議你直接訪問那個鏈接金拒,看看里面到底是什么。
但是套腹,就如我們前面所講的那樣绪抛,讓開發(fā)者去定義url這種復(fù)雜的事情并不是分享library的最佳方式。想象一下电禀,使用10個library不得添加10個url幢码?所以為了更好的體驗(yàn),我們把library從自己的倉庫傳到j(luò)center上尖飞。

第六部分:同步bintray用戶倉庫到j(luò)center
把library同步到j(luò)center非常容易症副。只需訪問網(wǎng)頁并點(diǎn)擊Add to JCenter


什么也不做直接點(diǎn)擊Send。



現(xiàn)在我們所能做的就是等待bintray團(tuán)隊審核我們的請求葫松,大概2-3個小時瓦糕。一旦同步的請求審核通過,你會收到一封確認(rèn)此更改的郵件∫该矗現(xiàn)在我們?nèi)ゾW(wǎng)頁上確認(rèn)咕娄,你會在 Linked To 部分看到一些變化。


從此之后珊擂,任何開發(fā)者都可以使用jcenter() repository 外加一行g(shù)radle腳本來使用我們的library了
1

compile
'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'

想檢查一下自己的library在jcenter上是否存在圣勒?你可以直接訪問http://jcenter.bintray.com,然后進(jìn)入和你library的group id 以及artifact id匹配的目錄摧扇。在本例中就是com -> inthecheesefactory -> thecheeselibrary -> fb-like -> 0.9.3圣贸。


請注意鏈接到j(luò)center是一個只需做一次的操作。如果你對你的package做了任何修改扛稽,比如上傳了一個新版本的binary吁峻,刪除了舊版本的binary等等,這些改變也會影響到j(luò)center。不過畢竟你自己的倉庫和jcenter在不同的地方用含,所以需要等待2-3分鐘讓jcenter同步這些修改矮慕。
同時注意,如果你決定刪除整個package啄骇,放在jcenter倉庫上的library不會被刪除痴鳄。它們會像僵尸一樣的存在,沒有人再能刪除它了缸夹。因此我建議痪寻,如果你想刪除整個package,請在移除package之前先在網(wǎng)頁上刪除每一個版本虽惭。
第七部分:上傳library到Maven Central
并不是每個安卓開發(fā)者都使用jcenter橡类。仍然有部分開發(fā)者還在使用mavenCentral() ,因此讓我們也把library上傳到Maven Central 吧趟妥。
要從jcenter到Maven Central猫态,首先需要完成兩個任務(wù):

  1. Bintray package 已經(jīng)連接到j(luò)center。
  2. Maven Central上的倉庫已經(jīng)認(rèn)證通過
    如果你已經(jīng)通過了這些授權(quán)披摄,上傳library package到Maven Central就異常簡單了亲雪,只需在package的詳情頁面點(diǎn)擊Maven Central 的鏈接。


輸入你的Sonatype用戶名和密碼并點(diǎn)擊Sync疚膊。

如果成功义辕,在Last Sync Status中會顯示Successfully synced and closed repo(見圖),但是如果遇到任何問題寓盗,則會在Last Sync Errors顯示出來灌砖。你需要根據(jù)情況修復(fù)問題,能上傳到Maven Central 的library的條件是相當(dāng)嚴(yán)格的傀蚌,比如+ 號是不能在ibrary版本的依賴定義中使用的基显。
完成之后,你可以在 Maven Central Repository 上找到你的library善炫。在那些匹配你ibrary的group id以及artifact id的目錄中撩幽。比如本例中就是com -> inthecheesefactory -> thecheeselibrary -> fb-like -> 0.9.3。
恭喜箩艺!雖然需要許多步驟窜醉,但是每一步都很簡單。而且大部分操作都是一勞永逸的艺谆。
轉(zhuǎn)自:http://www.cnblogs.com/sihaixuan/p/4852974.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榨惰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子静汤,更是在濱河造成了極大的恐慌琅催,老刑警劉巖居凶,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恢暖,居然都是意外死亡排监,警方通過查閱死者的電腦和手機(jī)狰右,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門杰捂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棋蚌,你說我怎么就攤上這事嫁佳。” “怎么了谷暮?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵蒿往,是天一觀的道長。 經(jīng)常有香客問我湿弦,道長瓤漏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任颊埃,我火速辦了婚禮蔬充,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘班利。我一直安慰自己饥漫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布罗标。 她就那樣靜靜地躺著庸队,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闯割。 梳的紋絲不亂的頭發(fā)上彻消,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音宙拉,去河邊找鬼宾尚。 笑死,一個胖子當(dāng)著我的面吹牛鼓黔,可吹牛的內(nèi)容都是我干的央勒。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼澳化,長吁一口氣:“原來是場噩夢啊……” “哼崔步!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缎谷,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤井濒,失蹤者是張志新(化名)和其女友劉穎灶似,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑞你,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酪惭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了者甲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片春感。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖虏缸,靈堂內(nèi)的尸體忽然破棺而出鲫懒,到底是詐尸還是另有隱情,我是刑警寧澤刽辙,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布窥岩,位于F島的核電站,受9級特大地震影響宰缤,放射性物質(zhì)發(fā)生泄漏颂翼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一慨灭、第九天 我趴在偏房一處隱蔽的房頂上張望朦乏。 院中可真熱鬧,春花似錦缘挑、人聲如沸集歇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诲宇。三九已至,卻和暖如春惶翻,著一層夾襖步出監(jiān)牢的瞬間姑蓝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工吕粗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纺荧,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓颅筋,卻偏偏與公主長得像宙暇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子议泵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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