一步一步教你将开源项目上传到jcenter

  最近闲着看了一下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,欢迎评论,欢迎指正

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容