如何上傳library到jcenter

如何上傳library到jcenter
我相信你已經知道了倉庫系統的大體工作原理?,F在我們來開始最重要的部分:上傳。這個任務和如何上傳library文件到http://jcenter.bintray.com一樣簡單。如果做到,這個library就算發布了。好吧,有兩個需要考慮:如何創建aar文件以及如何上傳構建的文件到倉庫。
雖然需要若干步驟,但是我還是想強調這事并不復雜,因為已經準備好了所有事情。整個過程如下圖:


因為細節比較多,我分為7部分,一步一步的詳細解釋清楚。
第一部分:在bintray上創建package
首先,你需要在bintray上創建一個package。為此,你需要一個bintray賬號,并在網站上創建一個package。
第一步:在bintray.com上注冊一個賬號。(注冊過程很簡單,自己完成)
第二步:完成注冊之后,登錄網站,然后點擊maven。

第三步:點擊Add New Package,為我們的library創建一個新的package。

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

雖然如何命名包名沒有什么限定,但是也有一定規范。所有字母應該為小寫,單詞之間用-分割,比如,fb-like。
當每項都填完之后,點擊Create Package。
第五步:網頁將引導你到 Package編輯頁面。點擊 Edit Package文字下的Package名字,進入Package詳情界面。

完工!現在你有了自己在Bintray上的Maven倉庫,可以準備上傳library到上面了。

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

第二部分:為Maven Central創建個Sonatype帳號
注:如果你不打算把library上傳到Maven Central,可以跳過第二和第三部分。不過我建議你不要跳過,因為仍然有許多開發者在使用這個倉庫。
和jcenter一樣,如果你想通過Maven Central,貢獻自己的library,你需要在提供者的網站Sonatype上注冊一個帳號。
你需要知道的就是這個帳號,你需要在Sonatype網站上創建一個IRA Issue Tracker 帳號。請到Sonatype Dashboard 注冊這個帳號。
完成之后。你需要請求得到貢獻library到Maven Central的權限。不過這個過程對我來說有點無厘頭,因為你需要做的就是在JIRA中創建一個issue,讓它們允許你上傳匹配Maven Central提供的GROUP_ID的library。
要創建上述所講到的issue,訪問Sonatype Dashboard,用創建的帳號登錄。然后點擊頂部菜單的Create。
填寫如下信息:
Project: Community Support - Open Source Project Repository Hosting
Issue Type: New Project
Summary: 你的 library名稱的概要,比如The Cheese Library。
Group Id: 輸入根GROUP_ID,比如,com.inthecheeselibrary 。一旦批準之后,每個以com.inthecheeselibrary開始的library都允許被上傳到倉庫,比如com.inthecheeselibrary.somelib。
Project URL: 輸入任意一個你想貢獻的library的URL,比如, https://github.com/nuuneoi/FBLikeAndroid。
SCM URL: 版本控制的URL,比如 https://github.com/nuuneoi/FBLikeAndroid.git。

其余的不用管,然后點擊Create?,F在是最難的部分...耐心等待...平均大概1周左右,你會獲準把自己的library分享到 Maven Central。
最后一件事是在Bintray Profile的帳戶選項中填寫自己的Sonatype OSS用戶名。


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

有幾個必填項。部分可以采用默認值,但是某些項需要你自己輸入恰當的內容,比如,你的真實名字,密碼 等等。
創建了key之后,調用如下的命令查看被創建key的信息。
gpg --list-keys

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

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

然后,使用如下的命令以ASCII形式導出公共和私有的key,請將yourmail@email.com替換成你前面用于創建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頁面點擊GPG 注冊。分別在Public Key和 Private Key中填入上一步導出的public_key_sender.asc和 private_key_sender.asc文件中的內容。


點擊Update保存這些key。
最后一步就是啟用自動注冊。到Bintray的主頁點擊maven。

點擊編輯

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

點擊Update保存這些步驟。完成?,F在只需點擊一下,每個上傳到我們Maven倉庫的東西都會自動注冊并做好轉向Maven Central 。
請注意這是一次性的操作,以后創建的每一個library都要應用此操作。
Bintray和Maven Central 已經準備好了?,F在轉到Android Studio部分。
第四部分:準備一個Android Studio項目
很多情況下,我們需要同時上傳一個以上的library到倉庫,也可能不需要上傳東西。因此我建議最好將每部分分成一個Module。最好分成兩個module,一個Application Module一個Library Module。Application Module用于展示庫的用法,Library Module是library的源代碼。如果你的項目有一個以上的library,盡管創建另外的module:1個 module對應1 個library。



我相信大家知道如何創建一個新的module,因此就不會深入講解這個問題了。其實很簡單,基本就是選擇creating an Android Library module ,然后就完了。



下一步是把bintray插件應用在項目中。我們需要修改項目的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'}

有一點非常重要,那就是gradle build tools的版本設置成1.1.2以上,因為以前的版本有嚴重的bug,我們將使用的是最新的版本1.2.3。
接下來我們將修改local.properties。在里面定義api key的用戶名以及被創建key的密碼,用于bintray的認證。之所以要把這些東西放在這個文件是因為這些信息時比較敏感的,不應該到處分享,包括版本控制里面。幸運的是在創建項目的時候local.properties文件就已經被添加到.gitignore了。因此這些敏感數據不會被誤傳到git服務器。
下面是要添加的三行代碼:
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 選項卡中找到。
最后一行是創建 GPG key的密碼。保存并關閉這個文件。
最后要修改的是module的build.gradle文件。注意前面修改的是項目的build.gradle文件。打開它,在apply plugin: 'com.android.library'之后添加這幾行,如下:

復制代碼

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"]}
復制代碼

bintrayRepo使用默認的,即maven。bintrayName修改成你上面創建的 package name。其余的項也修改成和你library信息相匹配的值。有了上面的腳本,每個人都能通過下面的一行gradle腳本使用這個library。
compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3‘

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

完成!你的項目現在設置好了,準備上傳到bintray吧!

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



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

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

現在我們已經成功一半了。下一步是上傳編譯的文件到bintray,使用如下的命令:
gradlew bintrayUpload

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

在bintray的網頁上檢查一下你的package。你會發現在版本區域的變化。


點擊進去,進入Files選項卡,你會看見那里有我們所上傳的library文件。

恭喜,你的library終于放在了互聯網上,任何人都可以使用了!
不過也別高興過頭,library現在仍然只是在你自己的Maven倉庫,而不是在jcenter上。如果有人想使用你的library,他必須定義倉庫的url,如下:
復制代碼

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

譯者注:前面都沒怎么看懂,看到上面的代碼之后一下子全懂了,呵呵。
你可以在bintray的web界面找到自己Maven倉庫的url,或者直接吧nuuneoi替換成你的bintray用戶名(因為前面部分其實都是一樣的)。我還建議你直接訪問那個鏈接,看看里面到底是什么。
但是,就如我們前面所講的那樣,讓開發者去定義url這種復雜的事情并不是分享library的最佳方式。想象一下,使用10個library不得添加10個url?所以為了更好的體驗,我們把library從自己的倉庫傳到jcenter上。

第六部分:同步bintray用戶倉庫到jcenter
把library同步到jcenter非常容易。只需訪問網頁并點擊Add to JCenter


什么也不做直接點擊Send。



現在我們所能做的就是等待bintray團隊審核我們的請求,大概2-3個小時。一旦同步的請求審核通過,你會收到一封確認此更改的郵件?,F在我們去網頁上確認,你會在 Linked To 部分看到一些變化。


從此之后,任何開發者都可以使用jcenter() repository 外加一行gradle腳本來使用我們的library了
1

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

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


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

  1. Bintray package 已經連接到jcenter。
  2. Maven Central上的倉庫已經認證通過
    如果你已經通過了這些授權,上傳library package到Maven Central就異常簡單了,只需在package的詳情頁面點擊Maven Central 的鏈接。


輸入你的Sonatype用戶名和密碼并點擊Sync。

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容