新聞中心
使用過 Android Studio 的同學(xué)應(yīng)該都會對 Gradle 這個強大的構(gòu)建系統(tǒng)留下了深刻的印象,Gradle 可以方便地集成各種開源庫,又能編寫自動化腳本處理任務(wù),大有取代 Maven 之勢。 業(yè)余時間我有在維護(hù)一個開源項目,也收到了幾個 PR 要求發(fā)布到 Maven Central 以供 Gradle 使用,所以自己摸索著找了些文章,終于把項目發(fā)布上去了。

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計,郾城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:郾城等地區(qū)。郾城做網(wǎng)站價格咨詢:18982081108
大概有以下 5 個步驟:
- 到 issues.sonatype.org 注冊個帳號,申請發(fā)布權(quán)限
- 編寫 Gradle 自動化發(fā)布腳本
- 下載 GPGTools,創(chuàng)建 Signing Key
- 執(zhí)行 Gradle 發(fā)布腳本
- 申請激活 Maven Central Sync 進(jìn)程
其中***步和第五步都需要人工審核,兩個工作日(美帝時間)內(nèi)會有答復(fù)。
1. 申請 Maven Central 發(fā)布權(quán)限
將你的項目主要信息放到 issue 里面就好了,其中 Group Id 要謹(jǐn)慎填寫,申請通過后,你只能在你的 Group Id下發(fā)布項目。
創(chuàng)建完 issue 后,靜候幾天,通過了就會給你發(fā)郵件。
2. 編寫 Gradle 發(fā)布腳本
感謝 Chris Banes 大神提供的腳本,稍作修改,弄了一個我自己的版本。
https://github.com/SpecialCyCi/AndroidResideMenu/blob/master/maven_push.gradle
將上面的腳本放到項目的根目錄下,然后到開源庫所在的 module 目錄,添加以下代碼 build.gradle :
apply from: '../maven_push.gradle'
修改項目根目錄下的gradle.properties,添加項目的信息:
VERSION_NAME=1.6 VERSION_CODE=8 POM_GROUP_ID=com.specyci POM_DESCRIPTION=.... POM_URL=https://github.com/SpecialCyCi/AndroidResideMenu POM_SCM_URL=https://github.com/SpecialCyCi/AndroidResideMenu POM_SCM_CONNECTION=scm:[email protected]:SpecialCyCi/AndroidResideMenu.git POM_SCM_DEV_CONNECTION=scm:[email protected]:SpecialCyCi/AndroidResideMenu.git POM_LICENCE_NAME=The MIT License (MIT) POM_LICENCE_URL=https://raw.githubusercontent.com/SpecialCyCi/AndroidResideMenu/master/LICENSE POM_LICENCE_DIST=repo POM_DEVELOPER_ID=specialcyci POM_DEVELOPER_NAME=Special Leung POM_INCEPTION_YEAR=2013
***到開源庫所在的 module 目錄,添加編譯信息到 gradle.properties :
- POM_NAME=AndroidResideMenu
- POM_ARTIFACT_ID=residemenu
- POM_PACKAGING=aar
3. 下載 GPGTools,創(chuàng)建 Signing Key
Signing Key 可以看作是作者信息的一個簽名,簽名分為 public 和 private,其中 public key 要上傳到keyservers.net 儲存。
先在本地命令行生成 Signing Key :
AndroidResideMenu git:(master) gpg --gen-key Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 8192 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire= key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: Special Leung(Testing) Email address: [email protected] Comment: This is just a testing key. You selected this USER-ID: "Special Leung(Testing) (This is just a testing key.) " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. ... pub 2048R/8C1761A2 2015-01-24 Key fingerprint = xxx uid [ultimate] Special Leung(Testing) (This is just a testing key.) sub 2048R/E32D1186 2015-01-24
然后把 public key 上傳到 keyservers.net :
$ gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 8C1761A2 gpg: sending key 8C1761A2 to hkp server pool.sks-keyservers.net
***將 Signing Key 的信息填充到 ~/.gradle/gradle.properties :
# 查看 key 信息 ~ gpg --list-secret-keys /Users/special/.gnupg/secring.gpg # <- key 目錄 --------------------------------- sec 2048R/8C1761A2 2015-01-24 # <- 8C1761A2 是 key id uid Special Lenung(Testing) (This is just a testing key.)ssb 2048R/E32D1186 2015-01-24
# ~/.gradle/gradle.properties signing.keyId=8C1761A2 signing.password=password signing.secretKeyRingFile=/Users/special/.gnupg/secring.gpg nexusUsername=username nexusPassword=password
4. 執(zhí)行 Gradle 發(fā)布腳本
%GRADLE_HOME%/bin/gradle uploadArchives
如果版本名含有 SNAPSHOT 字串,項目將會上傳到 snapshots 節(jié)點;如果要發(fā)布到 Maven Central 的正式庫,去掉版本名中的 SNAPSHOT 就可以,SNAPSHOT 版本不需要進(jìn)行第五步 Central Sync。
Snapshots 節(jié)點:https://oss.sonatype.org/content/repositories/snapshots
5. 激活 Maven Central Sync 進(jìn)程
第 4 步成功了的話,就可以在 oss.sonatype.org (https://oss.sonatype.org/) 的 stagingRepositories 看到項目了,然后按下「Close」,準(zhǔn)備發(fā)布項目。
成功 Close 了項目后,到***步的 issue 地址,發(fā)個評論讓工作人員給你開啟 Sync 進(jìn)程,這個一般一個工作日就有答復(fù)。
在工作人員回復(fù)可以之后,執(zhí)行「Release」操作,沒啥意外的話,兩小時后就可以在 search.maven.org 搜到你的項目了。
6. 結(jié)語
總的來說,發(fā)布還是挺方便的,人工審核可能會浪費點時間,偶爾還可能遇到些問題,不過 sonatype 還是很專業(yè)的,將你遇到的問題告訴他們之后,都可以得到一個有效的解決辦法。
不過最近 Android Studio 把 jCentral 作為默認(rèn)的節(jié)點了,也許下次就得折騰 jCentral 了。
名稱欄目:使用Gradle發(fā)布開源項目到MavenCentral
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/djcjggj.html


咨詢
建站咨詢
