新版Bintray网站发布Library到JCenter

本文介绍了Maven、JCenter、MavenCenter、JitPack、Bintray的概念以及如何在新版的Bintray网站上发布Library并提交到JCenter上java

前言

因为Bintray网站增长了Organization的概念,因此我在发布Library的时候发现网上不少文章都已通过时了。网站样子发生了很大的变化。因此在这篇文章把如何在最新的Bintray上发布Library到JCenter上作个整理android

1 什么是Maven、JCenter、MavenCenter、JitPack、Bintray?

相信不少人分不清这几个概念究竟表明什么,只知道跟着开源库的引入步骤走,好比以下的库,要你在root下的gradle中加一个maven地址,而后在app的gradle中加compilegit

示例

如今咱们将Maven、JCenter、MavenCenter、JitPack、Bintray这几个概念分个类解释下github

Maven仓库

在用Eclipse+Ant组合的时候,咱们每每引入一个库都是下载jar包或者aar包放到lib目录下,而后右键添加引用。 But!这并不友好,好比当升级版本库的时候每每须要下载新的包替换引用,很是麻烦。 因此,当升级到Android Studio + Gradle 组合后 gradle中提供了能够从远端拉取jar包和aar包引入本地。规则就是:web

compile 'com.tsy:pay:1.0.0'  //groupid:projectid:version
复制代码
  1. "com.tsy" 即GroupId,就是你在网上标识这是惟一标识你的一个组,就像Android里的包名同样
  2. "pay" 就是个人项目名称
  3. "1.0.0" 即版本号

这个概念咱们懂了。可是这个下载源是哪呢,就是maven仓库。那maven仓库的地址是什么呢,是否是Android Studio都是从一个仓库获取包呢,这时候就须要了解 JCenter、MavenCenter、JitPack 了apache

JCenter、MavenCenter、JitPack

这3个名词即具体的Maven仓库的地址,他们都是Maven仓库,可是属于不一样的服务源。总的来讲,只有两个标准的Android library文件服务器:Jcenter 和  Maven Central,如今JitPack也流行了起来。(比较方便)api

从哪引用这几个Maven仓库呢,就是在根目录build.gradle中安全

allprojects {
    repositories {
        jcenter()      //JCenter仓库
        mavenCenter()    //mvenCenter仓库
        maven { url "https://jitpack.io" }   // jitpack仓库
    }
}
复制代码

具体使用哪一个要看开源项目把Library传到了哪一个仓库。它就会要求你在这加哪一个仓库。 起初,Android Studio 选择Maven Central做为默认仓库。若是你使用老版本的Android Studio建立一个新项目,mavenCentral()会自动的定义在build.gradle中。 可是Maven Central的最大问题是对开发者不够友好。上传library异常困难。上传上去的开发者都是某种程度的极客。同时还由于诸如安全方面的其余缘由,Android Studio团队决定把默认的仓库替换成jcenter。正如你看到的,一旦使用最新版本的Android Studio建立一个项目,jcenter()自动被定义,而不是mavenCentral() 咱们发现第三个jitpack的写法和前2个不同,写法是maven {} 里面加入地址,其实这个才是maven仓库标准引用方法,jcenter和mavenCenter因为是标准的Android仓库,至关于定义了一个别名。 因此一些自定义的仓库都是这种写法而后填入本身的仓库网址,好比Fabric.io的librarybash

maven { url 'https://maven.fabric.io/public' }
复制代码

Bintray是什么

Bintray其实只是一个网站,他们负责维护JCenter这个库,就是说JCenter库是托管在Bintray网站上的。 可是Bintray不仅只有JCenter库,每一个人均可以在上面建立本身的帐号,生成本身的maven仓库,好比个人帐号tangsiyuan下面建立了一个名叫"maven"的maven仓库。那个人maven仓库地址就是 https://dl.bintray.com/tangsiyuan/maven 固然也能够再build中引入服务器

maven { url 'https://dl.bintray.com/tangsiyuan/maven' }
复制代码

而JCenter仓库只是Bintray官方帐户建立的一个maven仓库,地址是 https://jcenter.bintray.com

其实我的的仓库和JCenter是平级的,只不过JCenter被Android Gradle设为了标准仓库。

2 如何在新版的Bintray网站上发布Library到JCenter上

上面把全部的概念都介绍清楚了。如今咱们来介绍怎么把本身的Libary传到JCenter上。(mavenCenter已通过时了,jitpack很简单就不做介绍了)

2.1 完成本身的Library

发布的前提固然是本身的Library已经完成了。具体怎么写Library就再也不赘述。给你们截个个人MyOKHttp的图就行

MyOkHttp

MyOkHttp是建立的一个完整项目,app是sample应用,myokhttp是Library

2.2 Bintray网站上建立帐户

因为 Bintray网站 改版了,增长了Organization的概念,首页变成了这样

Bintray首页

对!就是中间那个大大的绿色按钮,用那个点了就错了!!!变成了注册一个组织,注册地址是 https://bintray.com/signup

signup

而注册我的的地址应该是 https://bintray.com/signup/oss

signup-oss

坑爹!重要的事情说3遍!!!

注册地址是 https://bintray.com/signup/oss

注册地址是 https://bintray.com/signup/oss

注册地址是 https://bintray.com/signup/oss

具体注册过程就很少说了,注意一点,好像不能用QQ邮箱注册

2.3 建立maven仓库

注册完成,激活邮箱,登陆后建立一个maven仓库

建立maven仓库

name写maven(由于上传的时候不指定的话默认仓库名是maven) type选择maven

建立成功后就像上图我成功建立的maven仓库同样。

2.3 上传Library到本身建立的maven仓库

在这里我使用了开源库上传本身的Library

https://github.com/novoda/bintray-release

根目录build添加

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath 'com.novoda:bintray-release:0.3.4'
    }
}
复制代码

须要上传Library的build添加

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

...

publish {
    userOrg = 'tangsiyuan'      //bintray注册的用户名
    groupId = 'com.tsy'         //compile引用时的第1部分groupId
    artifactId = 'myokhttp'     //compile引用时的第2部分项目名
    publishVersion = '1.0.0'    //compile引用时的第3部分版本号
    desc = 'This is a okhttp3 extend library'
    website = 'https://github.com/tsy12321/MyOkHttp'
}
复制代码

最后打开Termainal执行命令

./gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
复制代码

其中BINTRAY_USERNAME换成bintray注册的用户名,BINTRAY_KEY换成本身的APIKEY

APIKEY的查看以下

APIKEY

回车执行命令,看到BUILD SUCCESS即上传成功

这时候咱们能够打开maven仓库看到本身提交的项目

maven仓库

2.4 提交到JCenter

在咱们上传到本身maven仓库后其实就已经能够引用本身的库了。只要在root下的build加上本身maven地址

maven { url 'https://dl.bintray.com/tangsiyuan/maven' }
复制代码

而后在app的build中加上引用便可

compile 'com.tsy:myokhttp:1.0.0'
复制代码

我的maven仓库

点Sync,能够发现引用成功。

固然若是可以提交到JCenter就更好了,再也不须要定义本身maven仓库地址,直接compile便可。 进入项目页,点击Add to JCenter

Add to JCenter

而后直接commit send就行(提交JCenter后groupID和在本地定义的同样,因此本地定义groupID要能标识我的,最好到 https://jcenter.bintray.com 看下有没有重复的包名

commit to JCenter

最后等待Bintray审核经过。(我晚上提交,次日就审核经过了)

经过后会有右上方小邮箱按钮提示信息,提示审核经过

tips

项目页信息多了个JCenter图标

JCenter审核经过

这时候Library就已经成功提交到了JCenter,咱们回到项目中将build中的我的maven仓库引用删掉,只保留JCenter,Sync。大功告成!!!

彩蛋

教一个高逼格的小技巧,Github上常常会看到2个小图标

dvg

就是这两行代码

[![License](https://img.shields.io/badge/license-Apache%202-green.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Download](https://api.bintray.com/packages/tangsiyuan/maven/myokhttp/images/download.svg) ](https://bintray.com/tangsiyuan/maven/myokhttp/_latestVersion)
复制代码

具体里面怎么替换就很少说咯。加上后感受逼格立马提升!

最后安利一波本身的2个库,欢迎star、pr

MyOkHttp

对Okhttp3进行二次封装,对外提供了POST请求、GET请求、PATCH请求、PUT请求、DELETE请求、上传文件、下载文件、取消请求、Raw/Json/Gson返回、后台下载管理等功能

https://github.com/tsy12321/MyOkHttp

PayAndroid

对微信支付和支付宝支付的App端SDK进行二次封装,对外提供一个较为简单的接口和支付结果回调

https://github.com/tsy12321/PayAndroid

相关文章
相关标签/搜索