偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Gradle發(fā)布開源項(xiàng)目到Maven Central

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

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

大概有以下 5 個(gè)步驟:

  1. issues.sonatype.org 注冊(cè)個(gè)帳號(hào),申請(qǐng)發(fā)布權(quán)限
  2. 編寫 Gradle 自動(dòng)化發(fā)布腳本
  3. 下載 GPGTools,創(chuàng)建 Signing Key
  4. 執(zhí)行 Gradle 發(fā)布腳本
  5. 申請(qǐng)激活 Maven Central Sync 進(jìn)程

其中***步和第五步都需要人工審核,兩個(gè)工作日(美帝時(shí)間)內(nèi)會(huì)有答復(fù)。

 

1. 申請(qǐng) Maven Central 發(fā)布權(quán)限

將你的項(xiàng)目主要信息放到 issue 里面就好了,其中 Group Id 要謹(jǐn)慎填寫,申請(qǐng)通過(guò)后,你只能在你的 Group Id下發(fā)布項(xiàng)目。

Alt text

創(chuàng)建完 issue 后,靜候幾天,通過(guò)了就會(huì)給你發(fā)郵件。

 

2. 編寫 Gradle 發(fā)布腳本

感謝 Chris Banes 大神提供的腳本,稍作修改,弄了一個(gè)我自己的版本。

https://github.com/SpecialCyCi/AndroidResideMenu/blob/master/maven_push.gradle

將上面的腳本放到項(xiàng)目的根目錄下,然后到開源庫(kù)所在的 module 目錄,添加以下代碼 build.gradle :

apply from: '../maven_push.gradle'

修改項(xiàng)目根目錄下的gradle.properties,添加項(xiàng)目的信息:

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

***到開源庫(kù)所在的 module 目錄,添加編譯信息到 gradle.properties :

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

 

3. 下載 GPGTools,創(chuàng)建 Signing Key

Signing Key 可以看作是作者信息的一個(gè)簽名,簽名分為 public 和 private,其中 public key 要上傳到keyservers.net 儲(chǔ)存。

先在本地命令行生成 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. 執(zhí)行 Gradle 發(fā)布腳本

%GRADLE_HOME%/bin/gradle uploadArchives

如果版本名含有 SNAPSHOT 字串,項(xiàng)目將會(huì)上傳到 snapshots 節(jié)點(diǎn);如果要發(fā)布到 Maven Central 的正式庫(kù),去掉版本名中的 SNAPSHOT 就可以,SNAPSHOT 版本不需要進(jìn)行第五步 Central Sync。

Snapshots 節(jié)點(diǎn):https://oss.sonatype.org/content/repositories/snapshots

 

5. 激活 Maven Central Sync 進(jìn)程

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

Alt text

成功 Close 了項(xiàng)目后,到***步的 issue 地址,發(fā)個(gè)評(píng)論讓工作人員給你開啟 Sync 進(jìn)程,這個(gè)一般一個(gè)工作日就有答復(fù)。

Alt text

在工作人員回復(fù)可以之后,執(zhí)行「Release」操作,沒啥意外的話,兩小時(shí)后就可以在 search.maven.org 搜到你的項(xiàng)目了。

 

6. 結(jié)語(yǔ)

總的來(lái)說(shuō),發(fā)布還是挺方便的,人工審核可能會(huì)浪費(fèi)點(diǎn)時(shí)間,偶爾還可能遇到些問(wèn)題,不過(guò) sonatype 還是很專業(yè)的,將你遇到的問(wèn)題告訴他們之后,都可以得到一個(gè)有效的解決辦法。

不過(guò)最近 Android Studio 把 jCentral 作為默認(rèn)的節(jié)點(diǎn)了,也許下次就得折騰 jCentral 了。

責(zé)任編輯:林師授 來(lái)源: specialcyci的博客
相關(guān)推薦

2014-05-30 14:06:46

2013-09-02 15:26:21

恒拓開源開源項(xiàng)目Koala

2013-07-18 17:00:12

Gradle構(gòu)建AndAndroid開發(fā)Android學(xué)習(xí)

2022-12-30 08:17:28

Gradle多模塊項(xiàng)目

2017-02-27 08:37:01

2016-02-24 10:45:00

2017-02-13 20:22:42

Android發(fā)布項(xiàng)目jcenter

2024-08-30 08:51:17

MavenGradleJava

2011-12-31 09:49:30

MavenJava

2021-07-26 05:21:37

JenkinsAndroid自動(dòng)化

2021-02-20 17:36:30

Google開源項(xiàng)目漏洞

2022-11-01 08:53:00

GradleMaven構(gòu)建工具

2018-09-20 17:30:01

2021-05-27 11:10:42

Python開源包代碼

2017-07-27 16:18:18

開源項(xiàng)目使用

2015-06-26 09:29:12

Grand Centr

2022-12-05 08:55:39

MavenGradle項(xiàng)目

2012-03-19 09:25:02

JavaLibrePlan

2020-08-06 10:29:38

JavaScript開發(fā)技術(shù)

2017-03-14 19:18:56

AndroidGradle實(shí)踐
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)