Bintray项目发布-基础

前言

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

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

  • Bintray官网: https://bintray.com/
  • JCenter仓库地址:https://jcenter.bintray.com/

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文件如下:


  4.0.0
 
  com.squareup.okhttp3
  okhttp
  3.12.0
  aar

文件名统一

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

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

用户手册

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

  • 了解核心概念:仓库、包和版本。见章节:Key Concepts。
  • 了解发布的三个步骤:创建版本、上传、发布。见章节:Uploading、Uploads
  • 了解上传的方法: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-plugin和bintray-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

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


你可能感兴趣的:(Bintray项目发布-基础)