如何将私有lib库发布到jcenter上?

图片发自简书App

众所周知,将lib发布到jcenter的途径五花八门,八仙过海各显神通,各有各的插件,自己喜欢就好。我也在众多的方法中迷失过,有复杂也有简单,遇到的问题也奇奇怪怪,人都有选择综合征,一旦选择多了就无从下手。还好我找到了一种相对简单的上传方法。
首先你需要在https://bintray.com/上注册一个账号,这是必须的一步,后面在上传的时候会用到账号的一些信息。有了账号之后我们就可以开始在Android Studio中对build.gradle文件进行配置,以实现将我们的lib库上传到jcenter中。下面是build.gradle文件的配置步骤。

1.在项目根目录下面的build.gradle中添加插件的依赖路径,以及通过ext配置私有lib信息,包括库的包名,库名,版本号,库的源代码地址等等...

插件路径依赖

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

库信息的描述

def libVersion = "1.0.8"
ext {    
    userOrg = "iknow"          //bintray.com用户名    
    groupId = "com.github.iknow4"   //jcenter上的路径    
    publishVersion = libVersion //版本号    
    description = "It is a android utils Library"//类库的描述    
    website = "https://github.com/iknow4/Android-utils"//该库在github上对应的链接    
    uploadName = "AndroidUtils" //上传在bintray的文件夹    
    licences = ["Apache-2.0"]
}

完整的code如下:

buildscript {    
    repositories {        
       jcenter()    
 }   
dependencies {        
      classpath 'com.android.tools.build:gradle:2.0.0'        
      classpath 'com.novoda:bintray-release:0.3.4'    
  }
}
def libVersion = "1.0.8"
ext {    userOrg = "iknow"          //bintray.com用户名    
      groupId = "com.github.iknow4"   //jcenter上的路径    
      publishVersion = libVersion //版本号    
      description = "It is a android utils Library"//类库的描述    
      website = "https://github.com/iknow4/Android-utils"//该库在github上对应的链接    
      uploadName = "AndroidUtils" //上传在bintray的文件夹    
      licences = ["Apache-2.0"]
}
allprojects {    
    repositories {       
         jcenter()    
    }
}

task clean(type: Delete) {    
    delete rootProject.buildDir
}
2.在主工程目录下面的build.gradle文件中,将插件'com.novoda.bintray-release',apply到build.gradle中。

添加插件依赖:

apply plugin: 'com.novoda.bintray-release' //添加插件依赖

增加发布模块:

//添加发布模块
publish {    
        artifactId = 'android-utils-sdk'//模块名称    
        userOrg = rootProject.userOrg    
        groupId =   rootProject.groupId    
        uploadName = rootProject.uploadName //模块上传后所在的文件夹名称    
        publishVersion = rootProject.publishVersion//模块版本号    
        desc = rootProject.description//模块的描述    
        website = rootProject.website //模块的网站    
        licences = rootProject.licences //模块的licences
}

完整的代码如下:

apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release' //添加插件依赖
android {    
  compileSdkVersion 23    
  buildToolsVersion "24.0.0"    

  defaultConfig {        
      minSdkVersion 14        
      targetSdkVersion 23        
      versionCode 1        
      versionName "1.0"    
  }    
  buildTypes {        
        release {            
              minifyEnabled false            
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        
      }    
 }    
lintOptions {        
        abortOnError false   
   }
}
dependencies {    
      compile fileTree(dir: 'libs', include: ['*.jar'])
}
//添加发布模块
publish {    
        artifactId = 'android-utils-sdk'//模块名称    
        userOrg = rootProject.userOrg    
        groupId =   rootProject.groupId    
        uploadName = rootProject.uploadName //模块上传后所在的文件夹名称    
        publishVersion = rootProject.publishVersion//模块版本号    
        desc = rootProject.description//模块的描述    
        website = rootProject.website //模块的网站    
        licences = rootProject.licences //模块的licences
}
3.在终端执行./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxx -PdryRun=false命令

其中PbintrayUser是你在https://bintray.com/注册的用户名,PbintrayKey是账户设置页面下的key。
如果命令执行成功,你的库就上传到bintray 网站上了,但是还无法被依赖使用,需要将库发布到jcenter 上,发布有时候需要等待一天时间,如果成功,你会收到发布成功的邮件。这时候,恭喜你,你和其他人就可以在Android Studio中依赖使用了,是不是觉得很不错。
以上是我选择发布库的一种方式,自己觉得还是蛮简单的,从配置到最后发布命令,只需要三步,简称:发布三部曲。需要注意的是,发布是不能将相同版本的库覆盖的,所以每次发布的版本号要求不一样。

可以参考我github上的一个项目Android-utils
该项目是一个开发工具库,如果想使用可以直接在build.gradle中进行依赖

dependencies {    
      compile 'com.github.iknow4:android-utils-sdk:1.0.8'
}

THE END
国际惯例附上微信,如有问题欢迎交流:


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

推荐阅读更多精彩内容