新版bintray Android library上传到JCenter仓库

compile'com.android.support.constraint:constraint-layout:1.0.2'

类似这样的网络依赖,相信所有的Android对此熟的不能在熟了。而这样的一段代码能让你自动下载所对应的Library并依赖,相信不少人并不清楚它的原理。下面我们来简单说说:

Android Studio是从build.gradle里面定义的Maven 仓库服务器上下载library的。Apache Maven是Apache开发的一个工具,提供了用于贡献library的文件服务器。总的来说,只有两个标准的Android library文件服务器:jcenter 和  Maven Central。

jcenter

jcenter是一个由 bintray.com维护的Maven仓库 。你可以在这里看到整个仓库的内容。

我们在项目的build.gradle 文件中如下定义仓库,就能使用jcenter了:

allprojects {

    repositories {

        jcenter()

    }

}

Maven Central

Maven Central 则是由sonatype.org维护的Maven仓库。你可以在这里看到整个仓库。

注:不管是jcenter还是Maven Central ,两者都是Maven仓库

我们在项目的build.gradle 文件中如下定义仓库,就能使用Maven Central了:

allprojects {

    repositories {

        mavenCentral()

    }

}

虽然jcenter和Maven Central 都是标准的 android library仓库,但是它们维护在完全不同的服务器上,由不同的人提供内容,两者之间毫无关系。当前最新版的Android Studio默认使用的事jcenter,理由是:

1 jcenter通过CDN发送library,开发者可以享受到更快的下载体验。

2 jcenter是全世界最大的Java仓库,因此在Maven Central 上有的,在jcenter上也极有可能有。

3 友好的用户界面和简单易操作的上传步骤

这是我们常用的仓库,另外还有其他类型的仓库,这里我们暂时不做详解了。


下面我们再了解下自己动手上传Library到bintray的步骤。关于这个,有很多大神已经分享过,这里我仅结合自己上传的经验和各位大神的经验,尽力清晰的理出它们的步骤。

第一部分:在bintray上创建package

首先,你需要在bintray上创建一个package。为此,你需要一个bintray账号,并在网站上创建一个package。

第一步:在bintray.com上注册一个账号。(注册过程很简单,自己完成)

第二步:完成注册之后,登录网站,然后点击maven。

第三步:点击Add New Package,为我们的library创建一个新的package。


第四步:输入所有需要的信息


虽然如何命名包名没有什么限定,但是也有一定规范。所有字母应该为小写,单词之间用-分割,比如,fb-like。

当每项都填完之后,点击Create Package。

第五步:网页将引导你到 Package编辑页面。点击 Edit Package文字下的Package名字,进入Package详情界面。


完工!现在你有了自己在Bintray上的Maven仓库,可以准备上传library到上面了。 


Bintray账户的注册就完成了。下一步是Sonatype,Maven Central 的提供者。


第二部分:准备一个Library,并填写一些配置信息

library的的创建过程,我便跳过了。

下一步是把bintray插件应用在项目中。我们需要修改项目的build.gradle(就是根目录的build.gradle,app下的build.gradle是module的build.gradle,一定分清楚)文件中的依赖部分,如下:

dependencies {

    classpath 'com.android.tools.build:gradle:1.2.3'

    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' //自动化maven打包插件

    classpath 'com.github.dcendents:android-maven-plugin:1.2' //自动上传至Bintray平台插件

}

接下来在module的build.gradle的中添加以下代码

applyplugin:'com.github.dcendents.android-maven'

applyplugin:'com.jfrog.bintray'

// This generates POM.xml with proper parameters

install {

repositories.mavenInstaller {

pom {

project {

licenses {

    license {

                    name 'The Apache Software License, Version 2.0'

                        url'http://www.apache.org/licenses/LICENSE-2.0.txt'

                    }

            }

developers {

developer {

id developerId  //通常是你在开源社区的昵称

name developerName  //你的姓名

email developerEmail  //你的邮箱

}

}

scm {

connection projectGitUrl  //项目的Git地址,例如:https://github.com/xiaopansky/Sketch.git

developerConnection projectGitUrl  //项目的Git地址,例如:https://github.com/xiaopansky/Sketch.git

url projectSiteUrl  //项目官方网站的地址,没有的话就用Github上的地址,例如:https://github.com/xiaopansky/Sketch

}

}

}

}

}

// This generates sources.jar

task sourcesJar(type: Jar) {

from android.sourceSets.main.java.srcDirs

classifier ='sources'

}

task javadoc(type: Javadoc) {

source = android.sourceSets.main.java.srcDirs

classpath +=project.files(android.getBootClasspath().join(File.pathSeparator))

}

// This generates javadoc.jar

task javadocJar(type: Jar,dependsOn: javadoc) {

classifier ='javadoc'

    from javadoc.destinationDir  

}

artifacts {

archivesjavadocJar

    archivessourcesJar

}

// javadoc configuration

javadoc {

options{

encoding"UTF-8"

        charSet'UTF-8'

        authortrue

        version projectVersionName  //项目版本号

links"http://docs.oracle.com/javase/7/docs/api"

        title javadocName  //生成的javadoc打开后主页显示的名称,通常跟项目名称一样即可

}

}

// bintray configuration

bintray {

user = bintrayUser  //你的Bintray的用户名

key = bintrayApikey  //你的的Bintray的API Key

configurations = ['archives']

pkg {

repo ="maven" //在bintray上的repository的名称,一般默认为"maven"

        name = projectName //项目名称

websiteUrl = projectSiteUrl  //项目名称项目官方网站的地址,没有的话就用Github上的地址,例如:https://github.com/xiaopansky/Sketch

vcsUrl = projectGitUrl  //项目的Git地址,例如:https://github.com/xiaopansky/Sketch.git

licenses = ["Apache-2.0"]

publish =true

    }

}

以上是配置信息,也可以通过创建类似bintrayKey.properties和bintrayProject.properties的文件设置配置信息,效果一样。不过更方便修改信息和数据安全。所以推荐使用。很简单,这里暂不做详细概述,以后有时间再补充。不会的同学可以参考大神的博客https://www.jianshu.com/p/0e7b8e14f0cd


第三部分: 把library上传到你的bintray

gradlew install(也可在工具右侧寻找)一定要先install  否则会报错

gradlew bintrayUpload




install的过程可能会出现一些报错信息,比如

,如果不影响install  BUILD SUCCESSFUL就不用管它。



有些时候可能会影响到build过程导致erro,可以把support仓库卸载了,再重新安装一次。

bintrayUpload的过程可能会出现一些报错信息

Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): ‘路径’

错误: 编码GBK的不可映射字符 ——注释不要用中文,或者修改项目的字符编码

错误: 找不到符号——删除javadoc里所有的html标签

Could not create package ‘路径’: HTTP/1.1 401 Unauthorized [message:This resource requires authentication]

你一定是用户名或者APIKey填错了。

修改完错误上传成功之后,就可以方便的使用compile了。以上。

-bash: ./gradlew: Permission denied

执行命令的权限不够,先执行如下命令赋予权限:

chmod +x gradlew  回车执行后,再执行上传jcenter命令就可以了。

Execution failed for task ':core:lint'.

> Lint found errors in the project; aborting build.

在上传过程中执行了lint检查,所以可能会报上面的错误。解决方法就是避免lint的检查,在每个module的gradle下面就要添加如下配置:

android {

lintOptions {

abortOnError false

}

}

:Execution failed for task ':core:mavenAndroidJavadocs'.

> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/Users/zhou/git/app/core/build/tmp/mavenAndroidJavadocs/javadoc.options'

在上传过程中执行了javadoc检查,所以可能会报上面的错误。解决方法就是避免javadoc的检查,在项目根目录下的gradle下面就要添加如下配置:

allprojects {

repositories {

jcenter()

}

tasks.withType(Javadoc) {

options.addStringOption('Xdoclint:none', '-quiet')

options.addStringOption('encoding', 'UTF-8')

}

}


第六部分:同步bintray用户仓库到jcenter

把library同步到jcenter非常容易。只需访问网页并点击Add to JCenter


什么也不做直接点击Send。

等待bintray团队审核我们的请求,大概2-3个小时。一旦同步的请求审核通过,你会收到一封确认此更改的邮件。现在我们去网页上确认,你会在 Linked To 部分看到一些变化。




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

推荐阅读更多精彩内容