最近闲着看了一下jcenter的使用,也想将自己使用频率比较高的东西抽成类库,然后通过compile来使用,提高开发效率,本来以为挺简单的,但是网上介绍的比较模糊,很多博客也比较老了,不适用,花了我一天的时间,还是走了很多弯路,这里记录下来,希望能帮助到小伙伴们,现在觉得还是挺简单的。
第一步:首先是注册,这就是我踩的最大的一个坑,导致我一天都没有上传成功。网上说的都是去jcenter的网站上注册就可以,其实不然,英文好的最好去看英文文档,一步一步来操作。
个人正确的注册地址:https://bintray.com/signup/oss
个人正确的注册地址:https://bintray.com/signup/oss
个人正确的注册地址:https://bintray.com/signup/oss
重要的事情说三遍,一定要到这个网址去注册。
打开界面是这样的,一定要选择我打标记的这个,默认的话是第一个,这就是坑,所以一定要看清楚再注册。

这里写图片描述

注:这里用普通的邮箱(qq,163这些都不好使)是行不通的,最好使用google邮箱或者outlook邮箱。
注册完成后界面是这样的,看下图:

这里写图片描述

但是,如果你注册后界面是下面这样的:

这里写图片描述

看不到New Repository,就说明你注册错了,踩了我的第一个坑。删除账号信息后,重新注册吧。
注册完成后我们点击Add New Repository,新建一个仓库。
注:创建的maven仓名字和类型都要写成maven,如下图所示:

这里写图片描述

然后我们开始获取user和key,至于为什么要,我们后面再说:

这里写图片描述

这里写图片描述

这样我们jcenter的工作就做好了,然后准备我们上传的开源项目,这个比较简单,我就随便说了。
第一步:先新建一个项目,然后在这个项目下新建一个Android LIbrary的Module,自己的开源库就在这个Module里面开发,如下图:

这里写图片描述

第二步:
在这个新建的Module里面,开发自己的开源项目,然后,在原来的项目里是可以直接引用Module里在代码的。但运行的时候会报错,需要在项目的build.gradle中添加如下代码:
compile project(':CommonUtilLibrary')

后面单引号里面,是自己创建的Module名字。
然后,再重新运行整个项目,就可以把Module也编译进去了。
第三步:
编写工程的build.gradle文件,记住,是工程的。
先打开项目的build.gradle文件,一定是项目的build文件,然后在里面添加如下代码:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
}
}
记住,代码有的就保留下来,没有的加上去。
注意:这里Sync有时候会报 Error:(2, 0) No service of type Factory...这样的错误,主要是因为这一行:
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
如果报错了的话,就自己去官网上看最新的插件版本号,改了就可以了。
这里添加完后完整的build.gradle应该是这样的:

这里写图片描述

然后再打开将要上传的Module的build.gradle文件,添加如下代码:
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

def siteUrl = 'https://github.com/caijin199410/CommonUtil.git' // 项目的主页 这个是说明,可随便填
def gitUrl = 'https://github.com/caijin199410/CommonUtil.git' // Git仓库的url 这个是说明,可随便填
group = "com.abrahamcaijin" // 这里是groupId ,必须填写 一般填你唯一的包名,对应com.squareup.okhttp3:okhttp:3.4.1中的com.squareup.okhttp3部分

install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
// Add your description here
name 'CommonUtil' //项目描述
url siteUrl
// Set your license
licenses {
license {
name 'The CommonUtil Software License, Version 1.0.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id 'caijinabraham' //填写开发者的一些基本信息
name 'caijinabraham' //填写开发者的一些基本信息
email 'caijinabraham@outlook.com' //填写开发者的一些基本信息
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
options {
encoding "UTF-8"
charSet 'UTF-8'
author true
version true
links "http://docs.oracle.com/javase/7/docs/api"
}
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}

Properties properties = new Properties()
properties.load(project.file('local.properties').newDataInputStream())
bintray {
// userOrg=properties.getProperty("bintray.user")
user = properties.getProperty("bintray.user") //读取 local.properties 文件里面的 bintray.user
key = properties.getProperty("bintray.apikey") //读取 local.properties 文件里面的 bintray.apikey
configurations = ['archives']
pkg {
repo = "maven"
name = "CommonUtil" //发布到JCenter上的项目名字,必须填写,对应com.squareup.okhttp3:okhttp:3.4.1中的okhttp
publishVersion = ‘1.0.0’//发布到JCenter上的项目版本号
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}

添加完成后,完整的build.gradle应该是这样的:

这里写图片描述

这里写图片描述

这里写图片描述

最后需要在本地的local.properties里面添加以下内容:
bintray.user=YOUR_BINTRAY_USERNAME
bintray.apikey=YOUR_BINTRAY_API_KEY
如图所示:

这里写图片描述

第四步:
打开android studio的命令行:

这里写图片描述

输入如下命令:
输入命令:
gradlew install
gradlew bintrayUpload
当这两个命令都成功显示BUILD SUCCESSFUL就可以了,或者不执行上面这两个命令,直接合成执行下面这个命令就可以了:
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
记住要把user和key换成自己的,同样要显示BUILD SUCCESSFUL才可以。

最后要将项目发布到jcenter:
上传开源库到jcenter的办法很多,可以百度,这里看看我的就可以了,打开jcenter的主页,进入自己新建的maven仓库里面,你就可以看到自己推上来的开源项目了,如下图所示:

这里写图片描述

这里写图片描述

然后需要等待审核通过,一般5-6小时。在审核通过前可以通过配置自己私有仓地址使用。

这里写图片描述

然后在项目的根目录下build.gradle配置地址:

这里写图片描述

然后在要是使用的Module的build.gradle里面添加依赖:
项目中加入依赖即可:
compile 'com.abrahamcaijin:ComonUtil:1.0.0'

注意:如果这里提示依赖不成功,可以再后边加上@arr,审核通过以后可以去掉后面的@arr,暂时发现os系统上传后不需要加入便可成功,windows系统上传需要加入@arr
compile 'com.abrahamcaijin:ComonUtil:1.0.0@aar'

然后现在是1.0.0版本,我以后想增加、迭代怎么办?
这个非常简单,当你的Library代码更改后,只需要更改一下上面的配置里面的publishVersion,运行gradlew clean build bintrayUpload -PdryRun=false,就可以更新版本号了。这样,整个过程就结束了。
好了,现在你就可以在你项目中依赖你的开源库了,就是这么简单!有不懂的联系我。

转载自:http://blog.csdn.net/u014727709/article/details/71104201
欢迎start,欢迎评论,欢迎指正

一步一步教你将开源项目上传到jcenter的更多相关文章

  1. mac下教你如何开源项目托管GitHub

    自从google code关闭了下载服务了之后,GitHub作为了目前最好用的免费开源项目托管站点,众多开源项目都托管在github,其中不乏著名的播放器MPC-HC. 这里教大家如何把代码库上传到G ...

  2. Maven系列(二) -- 将开源库上传到maven仓库私服

    前言 之前简单说了下Maven的搭建,现在跟大家说一下如何将自己的aar传到我们新搭建的maven仓库里面,接下来我们就从最基本的新建一个library开始讲述整个流程,话不多说,让我们把愉快的开始吧 ...

  3. Java Web文件上传原理分析(不借助开源fileupload上传jar包)

    Java Web文件上传原理分析(不借助开源fileupload上传jar包) 博客分类: Java Web   最近在面试IBM时,面试官突然问到:如果让你自己实现一个文件上传,你的代码要如何写,不 ...

  4. 7步教你使用git命令上传本地代码至github仓库(小白向)

    前言 1:首先你需要知道github和git分别是什么?(众所周知github是全球最大同性交友网站233333) github:国外一个免费托管代码的开源网站,每位注册用户都拥有专属的个人仓库(个人 ...

  5. 手把手教新手小白在window把自己的项目上传到github

    作为一个开发者,写博客,上传项目到github好像是不可不会的技能,很多有经验的老司机都会这么建议你.本宝宝第一次要把项目传到github的时候,确实有点蒙蔽,什么鬼,传个东西有必要这么难吗? git ...

  6. 手把手教你将本地项目文件上传至github

    相信大家都听过Git(分布式版本号控制系统)和github吧.没听过也没关系(Google一下),反正以后要去公司肯定会听过. 我是在今年年初才接触Git.之后就一发不可收拾.仅仅要有比較好的项目就G ...

  7. 手把手教你用原始方式上传项目至GitHub

    小编GitHub:https://github.com/ds1889 首先你得注册一个自己的GitHub账号,注册网址:https://github.com/join 有了自己的账号以后,就可以进行登 ...

  8. 清晰的教你如何将 Maven 项目上传至 中央仓库以及版本更新

    项目中总会依赖一些大牛的开源库,例如 Android 开发 通过以下方式就可以方便的引入库.那么如何将我们自己的库也能这样来使用呢?下面我们将详细的讲解每一步的过程: implementation ' ...

  9. 教你一步一步部署.net免费空间OpenShift系列之三------上传ASP.net程序

    接上回书,创建应用后,我们如何将自己的ASP.Net部署到应用空间呢,这里用WinSCP的SFTP协议进行上传和下载 上传ASP.net程序 下载WinSCP,并打开PuTTYGen 点击Genera ...

随机推荐

  1. oracle表信息

    获取表: select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select ...

  2. MySQL事件调度器event的使用

    Q:假设,有一个需求,希望在某一个时刻系统调用一个begin end执行一下:十分钟以后执行一下begin end.亦或有一个需求,每个多长时间周期性执行begin end.那么这个时候该怎么办呢? ...

  3. 画地为Mask,随心所欲的高效遮罩组件[Unity]

    在上一篇博文"扔掉遮罩,更好的圆形Image组件"中,笔者改变Image的顶点数据,使得Image呈圆形显示,避免了Mask的使用,从而节省Drawcall消耗,提高渲染效率了.这 ...

  4. 生产环境中使用Docker Swarm的一些建议

    译者按: 实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes, Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它 ...

  5. Python lambda 表达式有何用处,如何使用?

    在看Python教程的时候,被 lambda 的解释给难住了,之前没有这么用过. 在<简明Python教程>上的解释: [摘录如下:] lambda语句被用来创建新的函数对象,并且在运行时 ...

  6. Eclipse中启动tomcat时内存溢出

    今天在启动自己项目的时候遇到一个永久带(permgen space)内存溢出,查找了很多资料和请教了许多大神,最终才解决问题. 一.什么原因造成了永久带溢出: 1.项目使用了太多的静态变量 2.加载了 ...

  7. SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession作用域(Scope)和生命周期

    可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的.SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建.一是可以通过XM ...

  8. RegExp(正则表达式)常用知识点小结

    原文地址:→看过来 正则表达式用到的地方很多,但是每次很久不用就全忘光了,每次都要重新看一遍文档,为了节省时间,把它的一些基本要点画总结在一张图片中,这样方便以后查看. PS:细节的东西还是需要看详细 ...

  9. VR全景加盟-全景智慧城市携万千创业者决战BAT

    在所谓互联网思维走到末路.可穿戴设备基本昙花一现的大环境下,很多互联网人员转战VR市场,自然喜欢用互联网思维来考虑.笔者认识一些投资界人士,在谈到投资时,他们经常就问以下几句话:2B还是2C?将来有多 ...

  10. 谈一谈JDK8的函数式编程 (一)

    系列之前我想说的   最近有一段时间没写博客了,这几天回到学校,才闲下来,决定写一写最近学习到的只是,既是为了分享,也是为了巩固.之前看到过一篇调查,文章的数据是学习新知识,光是看只能获得大约5%,然 ...