成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Gradle發布開源項目到Maven Central

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

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

大概有以下 5 個步驟:

  1. issues.sonatype.org 注冊個帳號,申請發布權限
  2. 編寫 Gradle 自動化發布腳本
  3. 下載 GPGTools,創建 Signing Key
  4. 執行 Gradle 發布腳本
  5. 申請激活 Maven Central Sync 進程

其中***步和第五步都需要人工審核,兩個工作日(美帝時間)內會有答復。

 

1. 申請 Maven Central 發布權限

將你的項目主要信息放到 issue 里面就好了,其中 Group Id 要謹慎填寫,申請通過后,你只能在你的 Group Id下發布項目。

Alt text

創建完 issue 后,靜候幾天,通過了就會給你發郵件。

 

2. 編寫 Gradle 發布腳本

感謝 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:git@github.com:SpecialCyCi/AndroidResideMenu.git
POM_SCM_DEV_CONNECTION=scm:git@github.com: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 :

  1. POM_NAME=AndroidResideMenu  
  2. POM_ARTIFACT_ID=residemenu  
  3. POM_PACKAGING=aar 

 

3. 下載 GPGTools,創建 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
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>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: specialcyci+test@gmail.com
Comment: This is just a testing key.
You selected this USER-ID:
    "Special Leung(Testing) (This is just a testing key.) <specialcyci+test@gmail.com>"

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.) <specialcyci+test@gmail.com>
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.) <specialcyci+test@gmail.com>
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. 執行 Gradle 發布腳本

%GRADLE_HOME%/bin/gradle uploadArchives

如果版本名含有 SNAPSHOT 字串,項目將會上傳到 snapshots 節點;如果要發布到 Maven Central 的正式庫,去掉版本名中的 SNAPSHOT 就可以,SNAPSHOT 版本不需要進行第五步 Central Sync。

Snapshots 節點:https://oss.sonatype.org/content/repositories/snapshots

 

5. 激活 Maven Central Sync 進程

第 4 步成功了的話,就可以在 oss.sonatype.org (https://oss.sonatype.org/) 的 stagingRepositories 看到項目了,然后按下「Close」,準備發布項目。

Alt text

成功 Close 了項目后,到***步的 issue 地址,發個評論讓工作人員給你開啟 Sync 進程,這個一般一個工作日就有答復。

Alt text

在工作人員回復可以之后,執行「Release」操作,沒啥意外的話,兩小時后就可以在 search.maven.org 搜到你的項目了。

 

6. 結語

總的來說,發布還是挺方便的,人工審核可能會浪費點時間,偶爾還可能遇到些問題,不過 sonatype 還是很專業的,將你遇到的問題告訴他們之后,都可以得到一個有效的解決辦法。

不過最近 Android Studio 把 jCentral 作為默認的節點了,也許下次就得折騰 jCentral 了。

責任編輯:林師授 來源: specialcyci的博客
相關推薦

2014-05-30 14:06:46

2013-09-02 15:26:21

恒拓開源開源項目Koala

2013-07-18 17:00:12

Gradle構建AndAndroid開發Android學習

2022-12-30 08:17:28

Gradle多模塊項目

2017-02-27 08:37:01

2016-02-24 10:45:00

2017-02-13 20:22:42

Android發布項目jcenter

2024-08-30 08:51:17

MavenGradleJava

2011-12-31 09:49:30

MavenJava

2021-07-26 05:21:37

JenkinsAndroid自動化

2021-02-20 17:36:30

Google開源項目漏洞

2022-11-01 08:53:00

GradleMaven構建工具

2018-09-20 17:30:01

2021-05-27 11:10:42

Python開源包代碼

2017-07-27 16:18:18

開源項目使用

2015-06-26 09:29:12

Grand Centr

2022-12-05 08:55:39

MavenGradle項目

2012-03-19 09:25:02

JavaLibrePlan

2020-08-06 10:29:38

JavaScript開發技術

2017-03-14 19:18:56

AndroidGradle實踐
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品视频一区二区三区四区 | 日韩欧美在线观看视频网站 | 久久91av| 青青久在线视频 | 在线观看国产视频 | 一区二区三区视频在线免费观看 | 亚州成人 | 国产黄a一级 | 欧产日产国产精品99 | 性色av香蕉一区二区 | 自拍视频精品 | 久草网在线视频 | 亚洲欧美精品久久 | 毛片一级片 | 91极品欧美视频 | 亚洲不卡一| 性色av一区二区三区 | 网页av | 亚洲高清视频一区二区 | 亚洲视频免费在线观看 | 欧美福利网站 | 天天综合永久 | 亚洲国产成人在线观看 | 亚洲欧美视频在线观看 | 午夜免费精品视频 | 另类 综合 日韩 欧美 亚洲 | 国产精品久久久久久久免费大片 | 国产精品久久国产精品 | 18成人在线观看 | 久久久精品一区二区三区 | 国产精品精品视频一区二区三区 | 久久久久国产精品www | 亚洲一区二区三区免费视频 | 1级黄色大片 | 日本成人综合 | a视频在线观看 | 亚洲网站在线播放 | 亚洲天堂999 | 午夜在线免费观看视频 | 伊人精品在线 | 精品av天堂毛片久久久借种 |