Bintray项目发布-基础

前言

发布项目的定义。发布项目到远程JCenter仓库,准确的说是发布项目构件到JCenter仓库,用英语说是Publishing artifacts to the JCenter。本文所说的发布项目都是指发布项目构建后的生成物,即构件(Artifacts)。

简介。JCenter是JFrog公司旗下Bintray平台上一个公开的Java仓库。要发布项目到JCenter,首先需要发布项目到Bintray平台,然后才能发布到它的公开库——JCenter。

Bintray平台上可以托管多种类型的库,如比较流行的Maven和npm。

本文写作目的。本文目的是介绍如何上传Android Library项目构件到Bintray Maven库,并最终发布到JCenter这一整个流程。其实关于发布项目到JCenter这方面的介绍,网上已经有许多文章了,官网也有用户指南,那为什么我还有写这篇文章呢?

  • 博客介绍不全。一般博客只是介绍如何使用Gradle插件如gradle-bintray-plugin等上传项目Artifacts,但参数为什么要那样配置?上传失败如何定位问题?等等都没有介绍。如果不使用插件,又该如何做?
  • 官方用户指南较凌乱。

源码地址。本文涉及到的nicelogger项目Github地址:https://github.com/zhangliangnbu/nice-logger


Maven相关

详细介绍请见Apach Maven。简单讲,Maven就是项目构建和管理的工具,Maven仓库就是利用Maven来管理项目的仓库。

Maven仓库文件规范

上传文件到Maven仓库有一定的规范。

对于Android项目,必须上传的文件包括:

  • .aar文件。Android构件特有文件,类似于.jar文件,但包含一些资源文件。
  • .pom文件。Maven仓库中必须有的文件,XML格式,包含项目的所有信息,详情请见POM Reference

有些Maven仓库审核比较严格,需要上传另外的两个文件:

  • -sources.jar文件。Java源码文件。
  • -javadoc.jar文件。Java文档文件。

POM文件

有四个必填的参数,以著名的OkHttp项目作为示例进行说明如下:

  1. modelVersionPOM版本,一般都写4.0.0,支持Maven 2和3。
  2. groupId。项目所在的项目组标识,如OkHttp所在的项目组标识是com.squareup.okhttp3
  3. artifactId。项目的标识,如okhttp
  4. version。项目当前版本号,如OkHttp项目的3.12.0

另外还有一个参数packaging,对于Android项目来一般不能缺少,它表示打包方式,默认是jar,Android项目一般为aar

我们用Gradle解析依赖的时候,会这样写:implementation 'com.squareup.okhttp3:okhttp:3.12.0',其中com.squareup.okhttp3就是当前依赖的groupIdokhttp是依赖的artifactId,3.12.0是当前要解析的版本version

注意:groupIdartifactIdversion都是非常重要的参数,在上传文件之前必须先定义好,在之后的过程中会用到。

Android项目基本POM文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
  <version>3.12.0</version>
  <packaging>aar</packaging>
</project>

文件名统一

发布到JCenter里的四个文件名称必须统一如下:

  • {artifactId}-{version}.aar
  • {artifactId}-{version}-sources.jar
  • {artifactId}-{version}-javadoc.jar
  • {artifactId}-{version}.pom

用户手册

JFrog用户指南。里面详细介绍各种概念、使用、操作等。浏览一遍即可,有许多是用不上的。主要章节如下:

  • 了解核心概念:仓库、包和版本。见章节:Key Concepts
  • 了解发布的三个步骤:创建版本、上传、发布。见章节:UploadingUploads
  • 了解上传的方法:UI手动、cURL、Maven、Gradle。见章节:Maven Repositories

任何个人博客和文章都不能代替官方用户手册,这是必须要读的,它应当是一切非官方文档的参考。


发布流程

一般发布流程如下:

  1. 准备工作。定义参数;准备本地待发布项目;配置Bintray平台账号、仓库、Package、版本。
  2. 生成构件文件。本地生成待发布的构件文件(包括POM文件)。
  3. 发布到Bintray。上传和发布本地构件文件到Bintray平台。
  4. 发布到JCenter。发布Bintray平台上的项目到JCenter。



发布方式

发布项目到JCenter有许多方式:

  1. UI手动上传。通过Bintray网站UI,手动上传项目构件文件。
  2. cURL上传。通过cURL调用REST API接口上传。
  3. Maven上传。使用Maven客户端上传项目构件文件到Bintray平台的maven仓库。
  4. Gradle插件上传。通gradle-bintray-pluginbintray-release等Gradle插件上传。

不同的方式会导致发布流程略微有所不同,有些操作可以合并在一起。比如Gradle插件上传方式中,创建pacakge、版本、创建构件文件和上传操作可以一起执行。



准备工作说明

主要描述定义参数、准备本地项目和配置Bintray平台这三步操作。

定义参数

  • Bintray平台仓库名称。你要发布到哪个仓库,当然要知道它的名称了。我这里是android
  • Bintray平台Package名称。没有规定,我这里取为nicelogger
  • POM文件groupId。没有规定,一般为xxx.xxx.xxx,我这里取com.liang.android
  • POM文件artifactId。没有规定,我这里取nicelogger
  • POM文件version。版本号,我这里取0.0.1,作为第一个版本。

注意:Bintray平台Package名称和POM文件artifactId不必取相同的名称,可以不一致。为了方便说明和记忆,我取为一致。

准备项目

可以创建一个然后发布到GitHub或者从GitHub fork一个。为了描述方便工程名称为NiceLoggerDemo, Library Module名称为nicelogger

项目的GitHub地址在之后的配置中,需要用到。

配置Bintray平台

  • 创建账户。如果已经有账户了,就不用创建。在Bintray官网注册账号,参考官网指南-Creating an Account
  • 创建Maven库。如果已经创建过Maven仓库,可以不用创建。进入个人中心主页,点击“Add New Repository”,进入填写仓库信息页。填写信息:“Name”,看其他博客许多人写了“maven”,我写了“android”,表示是一个用于存储Android项目的Maven仓库,这个名字需要记住,以后使用Gradle插件上传项目的时候用得着。“Type”选择“Maven”。其他选填。点击“Create”就可以创建一个Maven仓库了。
  • 创建Package。用Gradle插件方式时可以不用手动创建。进入Maven仓库,点击“Add New Package”,进入仓库信息填写页。信息填写:“Name”填之前规定的nicelogger,“Version control”填你上传到Github上的项目地址,其他选填。点击“Create Package”即可。
  • 创建版本。用Gradle插件方式时可以不用手动创建。从Package页面进入“Create New Version”页面,“Name”填写定义好的0.0.1,其他选填,点击“Create Version”即可。

准备工作做好后,接下来就可以通过不同的方式进行后续操作了。



参考

  1. JCenter是什么
  2. Bintray官网
  3. JCenter仓库
  4. JFrog用户指南
  5. Apach Maven
  6. bintray-release
  7. 使用Gradle插件上传Artifacts到Bintrary
  8. 使用Gradle插件上传示例
  9. 博客-上传Gradle项目到Maven仓库
  10. 从Travis到Bintray

注:文章首发简书和我的个人博客永恒的码流
个人博客会持续更新,但由于精力有限,其他平台不能保证会更新。为了读到最新版本的文章,建议读我的个人博客。


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

推荐阅读更多精彩内容