128cf033f4bf6c4224566bba0195cd53
放弃JitPack,发布Android Library到Bintray、JCenter

什么是JitPack

JitPack是一个网站,它允许你把git托管的java或android项目(貌似目前仅支持github),轻松发布到jitpack maven仓库上。

什么是Bintray

Bintray是一个网站,它允许你创建私有maven、rpm、deb等仓库。

你还可以在Bintray上提交审核,把已经发布到bintray仓库上的库,发布到JCenter 。

为什么我不喜欢JitPack

JitPack看似傻瓜式的操作和配置,有时会造成更大的麻烦。例如,git项目有配置不对,编译不过去,幸运的话,JitPack很快就能显示错误日志。但是,由于某些原因(有可能是墙的问题),JitPack迟迟不显示日志(日志那个位置一直菊花)。配置各种不透明,例如groupId、artifactId配置不灵活,version只能跟发布版本......

只要编译错误,你必须修改代码或配置(大多数是gradle配置原因),再push到git,再在JitPack选择一个commit或release版本编译、发布......作为工程师,编译工程不能马上收到反馈,是不能容忍的。如果发布库前,能在本地编译,从console马上输出SUCCESS或FAILURE,并且能定位详细错误日志,这是最好的。

笔者用nexus搭建过私有maven(《Android Studio上传项目到Maven仓库》),gradle配置并不难。 Bintray方案,用novoda plugin后,gradle配置很简单,但注册、创建package麻烦一点点(作为程序猿,注册这点小事)。

在本地编译发布,没有JitPack的“延迟显示编译、配置错误”的缺点,有哪里配置不对,编译出问题马上就能看到。


Bintray创建maven仓库

Bintray注册

打开 bintray.com,点击右上角“Sign In”,进入注册界面。笔者建议你关联github账号,注册的细节笔者就不啰嗦了,相信你的智商。

选择maven仓库

注册好bintray账号之后,默认就有maven仓库,并不需要自己创建。当然你也可以“Add New Repository”继续创建。

创建Package

什么是package

你要发布一个库,必须要配置groupId、artifactId。在bintray,必须创建package,才能发布库,一个package对应一个库,这里的package并不是包名,而是与artifactId对应。

例如,gradle引用gson:

compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'

group指定的com.google.code.gson就是groupId,name指定的gson,就是artifactId。如果gson是你的项目,并且发布到bintray,就需要创建gson package.

Add New Package

在maven仓库页面,点击“Add New Package”,进入package创建界面。

我们需要发布的库,artifactId=demo_package

  1. Name填写"demo_package";
  2. Licenses选择开源许可,可选Apache-2.0
  3. Version Control建议填github项目地址(实际上填什么都可以)

点击“Create Package”,如无意外,package创建成功!


Android工程配置

新建Android工程,并新建Android Library Module,module的package=com.bintray.library.

我们使用novada plugin,帮助我们快速配置。github官网:novoda/bintray-release.

novoda目前已发布了0.5版本,由于笔者使用gradle 3.3,而novoda 0.5必须gradle 3.4+,因此笔者用0.4版本讲解。

gradle配置

在project build.gradle添加:

buildscript {
    dependencies {
        classpath 'com.novoda:bintray-release:0.4.0'
    }
}

allprojects {
    repositories {
        maven { url 'https://dl.bintray.com/kkmike999/maven' }
    }
}

// 指定javadoc UTF-8格式
task javadoc(type: Javadoc) {
    options.encoding = "utf-8"
}

https://dl.bintray.com/kkmike999/maven是bintray个人maven仓库地址,在maven页面右上角找到:

然后,在library build.gradle添加 :

apply plugin: 'com.novoda.bintray-release'

android {
    lintOptions {
        abortOnError false
    }
}

publish {
    userOrg = 'kkmike999'      // bintray注册的用户名
    groupId = 'com.bintray.library'
    artifactId = 'demo_package'// bintray创建的package
    publishVersion = '1.0'
}

配置就大功告成了!


发布项目到Bintray

我们先去bintray找到发布需要的api key。在bintray右上角,点击Edit Profile,进入Profile界面,再选择"API KEY"页面,就可以找到API Key了:

top Created with Sketch.