Android Studio發布aar庫到jcenter,并同步到MavenCentral

1. MavenCentralJCenter

? ? Maven Central 是由sonatype.org維護的Maven服務器。jcenter是由 bintray.com維護的Maven服務器。雖然Maven Central和jcenter都是標準的maven倉庫服務器,但是它們維護在完全不同的服務器,由不同的人提供內容,兩者之間毫無關系。在jcenter上存在的開源庫,可能 在Maven Central 上并不存在,反之亦然。我們都知道MavenCentral對開發者不夠友好,它的發布庫工作略顯繁雜且緩慢。所以我們一般都比較喜歡先將開源庫發布到jcenter后再同步到MavenCentral,這樣可以做到一舉兩得,開源庫在兩個maven倉庫服務器上都有發布。當然,有一件事情你必須要知曉明白:無論你是將開源庫發布到Maven Central還是jcenter,你都要注冊一個相應的用戶。

2. Maven Central用戶注冊

如果你只想把開源庫發布到jcenter服務器,那么請直接忽略掉整個Maven Central用戶注冊過程。直接跳到提綱3后繼續閱讀本文。

(1)在https://issues.sonatype.org中注冊并激活用戶。

(2)登錄用戶,點擊“Create”創建一個issue

? -Summary:填寫名稱,可以是任意內容

? -Description:填寫描述

? -Group Id:域名反轉(有效域名),如果沒有域名,就直接使用自己的github反轉(如github.com/thepacific反轉后是com.github.thepacific,其中thepacific是你的github用戶名,為了規范化,建議全小寫)

? ?-Project URL:項目的url,可以是項目的github地址

? ? -其他的條目可以不填,然后提交審核即可(審核通過前,你的倉庫是無法使用的)

? (3)issue審核期一般在2天內,如果審核通過后會發郵件通知你,登錄后查看“issue->上面創建的名稱”,你會發現它的等待狀態為“resolved”,至此恭喜你,你的倉庫可以正常使用了。

注意:一個用戶只需要創建一個issue就可以了,多創建了,人家也不會給你審核通過,容易招管理員厭惡。(你可以把issue想象成你的專屬maven倉庫,把你所有的開源庫都提交到這里就對了)

3. jcentral用戶注冊

(1)在https://bintray.com/中注冊并激活用戶

(2)登錄用戶,找到“Your Profile-->Edit”編輯你的資料

(3)“Your Profile-->Edit-->Accounts”,在Sonatype OSS User處填寫你的Maven Central用戶名(這一步不是必須的,如過你沒有Maven Central賬戶或者不想將開源庫同步到Maven Central服務器,可以忽略該步驟)

(4)“Your Profile->Edit-->API Key” 記錄下這個key值,它會在發布開源庫的時候要用到

(5)“Your Profile” 找到maven倉庫,這個就是你可以發布開源庫的maven倉庫,它限定了名字是:maven

4. 提交工作過程

無論是jcenter還是Maven Central都要求你在發布開源庫的時候提供aar 、source.jar、javadoc.jar、pom等必須文檔。此外,Maven Central還要求你提供相應的GPG簽名。所以我們開原庫發布的整個過程大致是這樣:上傳PGP簽名 --> 打包aar 、source.jar、javadoc.jar、pom等必要文檔 -->上傳到jcenter -->? 提交加入jcenter審核 --> 在審核上一步的審核通過后,再同步到Maven Central(如果你只需要將開原庫發布到jcenter那么你可以忽略上傳PGP簽名和同步到Maven Central步驟),如下圖:


5. 具體實施步驟

(1)創建 GPG 簽名

如果你用的是windows或者OSX,那么請到GPG 生成工具下在相應的工具安裝(linux系統一般自帶了,無需下載安裝,如果你的linux系統不存在gpg工具,那么就在控制臺終端像往常安裝軟件一樣安裝它就行了)。安裝完GPG生成工具后,創建和上傳簽名具體步驟是在命令行運行依次如下命令:

$ gpg --gen-key

$ gpg --list-keys

$ gpg --keyserver hkp://pool.sks-keyservers.net --send-keys your-public-key-id

$ gpg -a --export your-email@your-mailbox.com> public_key_sender.asc

$ gpg -a --export-secret-key your-email@your-mailbox.com> private_key_sender.asc


解釋如下圖:

(2)配置GPG 簽名。在計算機本地 gradle 運行環境的屬性文件(位于~/.gradle/gradle.properties,如果沒有請自行手動創建)添加內容:

signing.keyId=your-public-key-id

signing.password=your-gpg-password

signing.secretKeyRingFile=/Users/your-user-name/.gnupg/secring.gpg

(3)在你的gradle.properties 文件中配置你自己的pom文件信息。(只要將模板中內容一一替換成你自己的即可。模板中有中文注釋提示。具體模板點擊連接:https://github.com/ThePacific/maven-push )

(4)在你的local.properties 文件中配置你自己的jcenter用戶名和之前提到的API Key,Maven Central的用戶名和密碼,以及PGP密碼信息。(注意這個文件事關賬戶密碼,不要輕易git push到服務器上。只要將模板中內容一一替換成你自己的即可。模板中有中文注釋提示。具體模板點擊連接:https://github.com/ThePacific/maven-push )

(5)在android studio中創建artifacts.gradle 腳本文件,把它放在gralde文件夾下。它主要作用是腳本化生成source.jar和javadoc.jar文件。 (無需修改模板,直接拿來用即可。模板中有中文注釋提示。具體模板點擊連接:https://github.com/ThePacific/maven-push )

(6)在android studio中創bintray_push.gradle 腳本文件,同樣把它放在gralde文件夾下。它主要作用是腳本化完成打包、上傳、同步工作等等工作。(將模板中的“developers”以及bintray—pkg下的”name"和“labels”修改為你自己的信息即可。模板中有中文注釋提示。將具體模板點擊連接:https://github.com/ThePacific/maven-push )

(7)在你工程下的全局gradle.build文件的dependencies下加入以下插件引用:

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'

classpath ‘org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1‘

(8)在你工程library module下的gradle.build文件加入:apply from: "../gradle/bintray_push.gradle"

(9)編譯工程,然后在android studio終端執行:gradlew bintrayUpload任務(也可以在gradle面板執行點擊執行bintrayUpload任務)。等待.......一兩分鐘,正常情況下,開原庫在第一次提交的時候,你會發現有一個同步到Maven Central失敗(Sync Maven Central failed)提示。哈哈哈,不用慌張。為什么呢(不知道原因的肯定是沒有仔細閱讀“提交工作過程”內容)?因為你的開原庫在jcenter上沒有都被審核通過,所以沒法被同步到Maven Central。

(10)登陸jcenter,導航到你的開源庫展示頁面,點擊“Maven Central”,選在“Click here to get it inclued”來提交開源庫發布申請

然后它會跳轉到package管理頁面,點擊“Include My Package”,輸入開源庫名字,選擇你的開源庫,最后填寫,提交信息即可。

(11)等待.......幾個小時。就會收到審核通過通知(在jcenter主頁的消息頁面查看通知,郵件也會收到通知)。如果看到“approved”字眼,恭喜你,你的開源庫已經在jcenter發布完成,可以被廣大開發人員通過gralde complie使用了。

(12)登陸jcenter,導航到你的開源庫展示頁面,輸入Maven Central用戶名和密碼之后,點擊“Sync”,數分鐘后你就看到同步成功提示。同樣恭喜你,你的庫已經在Maven Central得到發布,可以被廣大開發人員通過gralde complie使用了。


(13)步驟10、11、12一般是在開源庫第一次發布的時候是必須的,之后升級更新,都不需要手動操作了,因為我們之前的腳本文件,已經幫我們干了這些事。

6. 常見錯誤

(1)java代碼字符不是utf-8格式,導致javadoc生成失敗,腳本無法完成上傳,因為必要文件缺一不可。

(2)java代碼注釋有問題,導致javadoc生成失敗,腳本無法完成上傳,因為必要文件缺一不可。

(3)gpg簽名生成或者配置不正確,導致簽名失敗,無法被同步Maven Central。

(4)jcenter或者Maven Central用戶名不是全小寫導致遠程倉庫url不匹配,出現404

轉載請注明出處:http://www.lxweimin.com/p/080a74726c09

maven-push腳本模板項目主頁:https://github.com/ThePacific/maven-push

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

推薦閱讀更多精彩內容