文档章节

手把手教你如何把项目提交到 jcenter

猴亮屏
 猴亮屏
发布于 2017/09/11 11:26
字数 2201
阅读 10
收藏 0
点赞 0
评论 0

前言

jcenter 作为 Android 开发者来说,应该是首选,因为 Android Studio 默认即是以 jcenter 为远程库,本文使用 bintray-release 插件完成项目的上传,相比于网上流传的 gradle-bintray-plugin, bintray-release 所需要编写的 gradle 代码量极少,所以即使你是一个与我一样对 gradle 不熟悉的开发人员,那也不是很大问题。其 github 地址为:https://github.com/novoda/bintray-release,有任何 issues 都可以在上面提交。

先完成你的 library

网上的教程都是先完成账号注册再跳转叫你完成 library,然后再回来上传,千万别这样,一来一回很容易迷糊,既然你是想要上传你的 library 的话,那么我相信这一步你已经完成了。

project 下 build.gradle

标题已经写的很大了,希望各位读者不要搞混了,这是在 project 目录下的 build.gradle 文件下添加以下依赖:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // 请添加如下一行依赖
        classpath 'com.novoda:bintray-release:0.5.0'
    }
}

目前笔者所使用的是 0.5.0 版本的 bintray-release ,bintray-release 插件版本可点此链接查看, https://github.com/novoda/bintray-release/releases。就目前笔者所使用的 0.5.0 版本来说,需要使用 gradle 3.5 version+ 进行编译,所以其他版本很有可能也对 gradle 版本有一定要求,希望各位读者稍稍注意些,不过不要紧,因为如果你的 gradle 版本不合适,在后期编译的结果中会给予你相应的提示。在 project 下的 build.gradle 中添加了相应依赖之后,我们就可以在 project 中各个 module 中使用。

module 下 build.gradle

请在你的 module 下的 build.gradle 中添加如下依赖:

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

publish {
    userOrg = 'username'          // bintray 用户名
    groupId = 'com.username'        // 依赖前面的路径,例如:compile 'com.squareup.okhttp3:okhttp:3.8.1',这里所填的就是 com.squareup,建议使用 com.+你的用户名
    artifactId = 'projectname'  // 模块名称
    publishVersion = '1.0.0'    // 版本号
    desc = 'xxxxxx'             // 你的项目描述
    website = 'xxx'             // 你的项目地址,可填 github 地址
}

如上已经写的很清楚了,这里还要提出一点的就是上面说到的模块名称,如果你的 library 只有一个,那么没有任何问题,直接写成你想设计成的名字。但是你的 library 如果是多 module 组成的话,例如可参考我的项目Permissions4M,各个模块请单独给一个名字用以区分,我的建议是 项目名-模块功能,例如我的参考库中分成了三个 module,分别取了 permissions4m-apipermissions-annotationpermissions-processor 用以区分。如果还有什么疑问,可以留言给笔者。如此一来,关于项目的配置我们已经做好了,那么接下来我们就应该去把关于 jcenter 网站的东西给完成就好了。两个 gradle 文件写好后,别忘了点击 sync 进行同步。

注册 bintray 账号

官网链接:https://bintray.com/,请一定注意:

如果你是进入官网的话,请点击右侧红色框框注册而不是左侧:

这里写图片描述

简单的说下,左侧注册是为付费用户免费体验,但是这个账户注册了之后反而有相当多的限制,致命的一点就是你无法将你的库上传至 jcenter 作为一个公有库供大家使用,而右侧的注册正如上所说“for an open source account”。账号注册好了之后,请进入:https://bintray.com/profile/edit ——

这里写图片描述

请点击 API Key,接下来

这里写图片描述

请点击箭头所指按钮,对 API Key 进行复制,当然如果你想点击 Show 看一看自己的 key 我也不拦着你。你可能会有一个疑问 API Key 是什么?理解起来很简单,既然 square 公司发布了 okhttp3 的 3.8.1 版本,那么我可不可以在前面所提到的 module 中的 gradle 中把 groupId 改成 okhttp3 的 groupId,然后上传新的版本覆盖它呢?当然不可以,一点是 groupId 是唯一的,另一点就是如果你想上传 square 公司的 okhttp3 项目的话,一定要有它的 API Key,所以 API Key 就类似一个账号密码的功能,来保障开发者项目的唯一性。

创建 maven 仓库

就像使用 github 一样,我们在 bintray 上需要先行创建一个库,但是一个账号只需要创建一个库就可以了。如下所示:

这里写图片描述

点击 Add New Repository:

这里写图片描述

请务必将 Name 写成 maven,因为这样可以帮你省去很多麻烦,然后 Type 务必选择 Maven。创建好 repo 后,请进入 repo 中,然后:

这里写图片描述

请点击 Add New Package,这里请注意,以后如果你有新的 library 需要上传到 jcenter,你不需要新建新的 repo,只需要进入 Maven repo 后,点击 Add New Package 即可,接下来就是填入相应的信息并确认即可。

Terminal 输入命令并上传

你可以选择原生或 Android Studio 中 Terminal 输入以下命令:

Windows:
gradlew clean build bintrayUpload -PbintrayUser=你的用户名 -PbintrayKey=API Key 的值 -PdryRun=false

Mac OS:
./gradlew clean build bintrayUpload -PbintrayUser=你的用户名 -PbintrayKey=API Key 的值 -PdryRun=false

如果出现 BUILDSUCCESSFUL 则代表已经成功,但是如果出现 FAILED 请不要慌,看看 terminal 的最前面的输出部分,看看是否有异常,如果没有或者不知道怎么解决,那么根据 terminal 最后面的输出部分,添加相应的参数让 terminal 输出异常细节,在此由于笔者没有截图保留,所以就不提供给各位读者了。大部分情况下的出错常常是 401,这在很大程度上可能是你的 API Key 填错了,如果还有解决不了的异常,可自行百度和谷歌,也可留言给笔者,但务必请先自行查询。

add to jcenter

理想情况下你的库已经上传到 bintray 上了,但是此时你的库还不是公有的,需要手动将库从你目前的私人 repo 同步到 jcenter 中,打开你的 repo 并进入你的项目中,在如下的位置会有一个 add to jcenter 的按钮:

这里写图片描述

由于笔者已经同步到 jcenter,故不再出现该按钮,而是多了一个方框中的咖啡杯,代表已经同步到了 jcenter。在点击 add to jcenter 之后,就会进入一个提交页面,你可以在框框内填上一些描述你库功能的文字,然后就可以提交了:

这里写图片描述

由于美国和我们有一定的时差,所以你的库可能不会很及时的被审核提交通过,但是就笔者的经历来看,都会在美国当地工作日当天处理好,速度还是很快的。

题外话

说几句题外话——

  • 其一是关于更新版本:

    只需要将上述中 module 中的 build.gradle 中的 publishVersion 进行更改就好了,如果你和笔者一样不是选择上传新版本,而是不停地覆盖老版本,那么请先在 bintray 上手动删除老版本之后再进行版本覆盖,当然,覆盖版本这种事只能发生在项目测试期,而项目运行期肯定不能这么干。jcenter 同步你的库所需时间大小不一,但是请读者记住,版本更新是不需要 add to jcenter 的,也就是意味着不需要通过审核,只是同步会需要一定时间,时间长短不一,可能几分钟,也可能如笔者一样,等待了几天才完成同步。

  • 其二是关于上述所说的版本覆盖:

    gradle 在每次依赖的情况下,实际上都会对库进行本地缓存,这样当我们下次再次使用该项目的同一版本的时候就会直接在本地进行获取而并不需要远程获取,这样是很大程度上方便了开发者,但是对于我上述的版本覆盖问题来说却是致命的。我在本地导入 1.0.0 版本测试的时候发现这个版本有个致命的 bug,导致项目压根就不能正常运行,我选择了上 bintray 手动删除 1.0.0 版本,并在本地修复 bug 后上传了新的 1.0.0 版本,但是我此时再次在本地使用 gradle 进行远程依赖时,gradle 会发现,这个库刚刚用过,而且还是 1.0.0 版本,那我就不去远程获取了,因为本地我缓存了一份啊!那么这样就会导致我们的 gradle 不能刷新本地依赖,怎么解决呢?请见我的上一篇博客,一行命令带你强制清除 gradle 依赖缓存

本文转载自:http://blog.csdn.net/ziwang_/article/details/76556621

共有 人打赏支持
猴亮屏

猴亮屏

粉丝 30
博文 513
码字总数 54284
作品 2
北京
Android工程师
将自己的开源项目提交到JCenter

开始 最近自己写了一个开源控件,是有关标签流控件的(从服务器端获取标签,然后将标签自适应的放进一个容器里)。现在控件写完了,自己就想将它提交到Maven的中心仓库或者是JCenter。可是自己对...

fyales
2015/03/10
0
1
Android Studio把library分发到jCenter和Maven Central

如果你想在Android Studio中引入一个library到你的项目,你只需添加如下的一行代码到模块的build.gradle文件中。 1 2 3 dependencies { compile 'com.inthecheesefactory.thecheeselibrary:...

vane_
2015/07/01
0
0
bulid.gradle 解析

外层的bulid.gradle文件 两处的repositories的闭包中都声明了jcenter() 这行配置。 jcenter是一个代码托管仓库,很多Androdi开源项目都会选择将代码托管到jcenter上,声明了这个配置之后,可...

Jerry_0221
06/12
0
0
如何使用Android Studio把自己的Android library分享到jCenter和Maven Central

第一部分:在bintray上创建package 首先,你需要在bintray上创建一个package。为此,你需要一个bintray账号,并在网站上创建一个package。 第一步:在bintray.com上注册一个账号。(注册过程...

鹭明
06/26
0
0
Android开发:使用AutoInputAuthCode快速实现自动填写验证码

前言 该类库的实现原理:《Android开发:实现APP自动填写注册验证码功能》。感兴趣的可以看下。 项目地址:github.com/xiong-it/Au…,欢迎star/fork,或者issue,pr。 本文原创作者:MichaelX...

MichaelX
07/16
0
0
Android解决下载依赖慢的问题

背景 --- 尝试使用greendao进行开发一个app玩,使用android studio 开发 冲突 --- IDE中看到gradle卡在了下载greendao依赖的地方。 问题 --- 如何解决? 答案 --- 第1步:检查gradle有没有设...

樂天
06/17
0
0
解决android studio引用远程仓库下载慢(JCenter下载慢)

第一种方法 使用开源中国的maven库 阿里云的(速度飞快):http://maven.aliyun.com/nexus/content/groups/public/ 替换项目根目录下build.gradle中的...

SuShine
06/05
0
0
Android Studio使用笔记

使用Gradle方式: 如果编译成功,运行提示 com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/home/zhaokun/work/jdk1.7.......

木头r
2015/08/14
0
0
学习Android Studio里的Gradle

一直听说Gradle很强大,只是偶尔用Android Studio创建Demo的时候看到他一次,今天抽个时间完整记录一下。 1.gradle位置 Android Studio项目创建好之后,默认有3个gradle文件,分别位于: /s...

红豆与绿豆
2015/11/07
0
0
gradle/Groovy语法

Groovy官网的介绍(http://www.groovy-lang.org/download.html#gvm) Gradle API 文档: https://docs.gradle.org/current/dsl/org.gradle.api.invocation.Gradle.html 深入理解Android(一)......

shareus
04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Application Express安装

Application Express安装文档 数据库选择和安装 数据库选择 Oracle建议直接12.2.0.1.0及以上的版本,12.1存在20618595bug(具体可参见官方文档) Oracle 12c 中安装oracle application expr...

youfen
11分钟前
0
0
OpenMessaging概览

序 本文主要研究一下OpenMessaging 架构图 namespace,类似cgroup的namespace,用来进行安全隔离,每个namespace有自己的producer、consumer、topic、queue等 producer,消息生产者有两类,一...

go4it
16分钟前
0
0
MySQL索引类型

MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 https://www.cnblogs.com/luyucheng/p/6289714.html...

灯下草虫鸣_
17分钟前
0
0
spring boot2.x设置quartz对一个job顺序执行

背景 使用quartz时,如果一个job的是1分钟,但是执行却要2分钟,quartz默认的是不会等job执行结束后,再执行下一次job,默认是会再开启一个线程执行该次job,这就可能导致一些重复执行的BUG...

EasyProgramming
22分钟前
0
0
iOS定向阴影的探讨

view.layer.shadowColor = [UIColor blackColor].CGColor; view.layer.shadowOpacity = 0.8f; view.layer.shadowRadius = 4.f; view.layer.shadowOffset = CGSizeMake(0,0); ......

RainOrz
33分钟前
0
0
oracle使用jdbc报错Locale not recognized解决方法

在开启数据库连接之前和之后添加时区参数:

源哥L
37分钟前
0
0
django2.0正则表达

re_path("userdetail-(?P<nid>\d+)/",views.user_detail), 解析时用re_path 否则出现not find page

南桥北木
40分钟前
0
0
Mac 安装jd-gui

安装brew 命令行输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 回车 安装jd-gui brew cask install jd-gui......

张欢19933
48分钟前
0
0
占坑

00000000000000000000000000000000000000000000000

钟元OSS
48分钟前
0
0
编程学习读书笔记之jQuery函数应用学习心得(图)

编程学习读书笔记之jQuery函数应用学习心得(图) jQuery.extend() 函数 用于将一个或多个对象的内容合并到目标对象。 1.当提供两个或多个对象给.extend(),对象的所有属性都添加到目标对象(...

原创小博客
50分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部