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.jianshu.com/p/080a74726c09

maven-push脚本模板项目主页:https://github.com/ThePacific/maven-push

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容