将Library上传到Jcenter

作者: 程序亦非猿 | 来源:发表于2015-09-10 19:27 被阅读6486次

前言

习惯了compile 'com.android.support:appcompat-v7:22.2.0'这样一句话帅气的引用某个库.

这次自己尝试一下如何上传到'JCenter'~
这里我以我自己的CrashCatcher为例来讲解一下.

PS:工具: AndroidStudio,Gradle

申请Bintray账号

Bintray可以用Github账号登陆,很方便.

注册完,拿到昵称和ApiKey

获取方式,点击Edit:


点击Edit

然后点击API Key:


APIKey

做过第三方授权登录的同学应该都知道apikey吧,上传到JCenter我们同样需要.

配置

在上传之前,我们需要做一些配置

配置项目

修改项目里的build.gradle(注意是项目不是库)
增加这两个dependencies:

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'

增加后如下:

dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}

配置Library

library的配置比较麻烦,我把所有的配置都贴出来好了,虽然比较粗糙,但是还能看懂.
我就不一步一步写了,相信你可以的!~
注意看清楚需要配置的地方就行!

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
//apply plugin: 'bintray-release'


// 这个version是区分library版本的,因此当我们需要更新library时记得修改这个version
// 这个version影响后面的引用
version = "0.0.2"

android {

    resourcePrefix "cc_" //随意填写

    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 2
        versionName "1.1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:recyclerview-v7:22.2.0'

}



def siteUrl = 'https://github.com/AlanCheen/CrashCatcher'   // 项目的主页
def gitUrl = 'git@github.com:AlanCheen/CrashCatcher.git'   // Git仓库的url
group = "yifeiyuan.library.crashcatcher"            // Maven Group ID for the artifact,一般填你唯一的包名
install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                // Add your description here
                name 'Android CrashCatcher'     //项目的描述 你可以多写一点
                url siteUrl
                // Set your license
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id 'alancheen'      //填写的一些基本信息
                        name '程序亦非猿'
                        email 'alancheen06@gmail.com'
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}
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))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    configurations = ['archives']
    pkg {
        repo = "maven"
        name = "CrashCatcher"   //发布到JCenter上的项目名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

配置apikey和昵称

打开项目的local.properties,加入以下两句:

bintray.user=your_user_name
bintray.apikey=your_apikey

PS: 这个文件必须忽略掉,不能上传到github上去哦~~

执行命令

好了,万事俱备,我们开始执行命令:

./gradlew install
./gradlew bintrayUpload

等待上传完毕,然后去自己的仓库首页找到该库,点击Add TO JCenter,然后发送,接下来就是等待!~

示意图

等到管理回复,我的大概是6个多小时(可能是我晚上发的原因吧),第一次会比较长,如果是更新的话很快的!

如图

使用

按照语法规则来拼写路径:
group:库的名字:版本号 (就是我们配置library的时候填写的)
所得:yifeiyuan.library.crashcatcher:crashcatcher:0.0.2

接下来添加依赖一句话即可:
compile 'yifeiyuan.library.crashcatcher:crashcatcher:0.0.2'

总结

第一次配置比较麻烦,不过相信成功后的成就感还是满满的~~
其实还有更好的工具!咱们慢慢来~

参考

http://blog.saymagic.cn/2015/02/16/release-library-to-jcenter.html
https://www.virag.si/2015/01/publishing-gradle-android-library-to-jcenter/
http://rocko.xyz/2015/02/02/%E4%BD%BF%E7%94%A8Gradle%E5%8F%91%E5%B8%83%E9%A1%B9%E7%9B%AE%E5%88%B0JCenter%E4%BB%93%E5%BA%93/

另外欢迎关注:
我的Github
我的微博
我的微信公众号:

微信公众号

相关文章

网友评论

  • 佚凡:历经千辛万苦终于成功了,
    我遇到的问题是 注册账号成功后,要先创建个maven 仓库 ,要不然报404找不到
    佚凡:library里面有远程依赖的三方 如果用implementation/api的依赖方式 打出来的aar就提示找不到三方的项目,如果compile的依赖方式打出来的 aar就能正常使用,有人遇到过么 :pray:
    佚凡:还有最后两个命令时 提示javadoc编译错误 ,需要在原命令后面 加上 -x javadoc
  • Only凹凸曼:冒昧的问一下,也成功的上传了jcenter,但是引用的时候提示找不到,有人知道原因吗?
  • 宇宝守护神y:bintray 上面怎么更新库?
  • 祝融夫人OR:gradle bintrayUpload过程中遇到如下错误:
    Task '?bintrayUpload' not found in root project 'MyApplication'. Some candid

    1、系统环境变量配置和android studio里面一样的gradle
    2、系统环境变量添加jre\bin环境变量
  • 祝融夫人OR:Error:(2, 0) No service of type Factory<LoggingManagerInternal> available in ProjectScopeServices.
    <a href="openFile:E:\AndroidCode\MyApplication\protest\build.gradle">Open File</a>

    这个是什么错误
    佚凡:@祝融夫人OR :+1:
    祝融夫人OR:解决了。。。项目gradle改成
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
  • 乌冬国:如果有代码有更新如何更新版本
  • 9e9d7b915f67:我这个会报错!不知道怎么解决。
    gradlew install运行后报:

    Downloading https://services.gradle.org/distributions/gradle-2.14.1-all.zip

    Exception in thread "main" javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Connection reset

    9e9d7b915f67:我的gradle是
    classpath 'com.android.tools.build:gradle:2.2.3'
  • ElonYanJ:没有add to JCenter
  • 泣之物语:每次更新都需要add to jcenter吗?还是只要add 一次就行了
    程序亦非猿:@泣之物语 更新不需要
  • TedYt:这个问题一直困惑这我,看到这篇文章,突然有一种幸福感 :smile:
    程序亦非猿:@TedYt 哈哈哈哈哈哈 那还不赏被咖啡 哈哈哈哈
  • Terry:build.gradle 报这个错误 Error:(3, 0) No service of type Factory<LoggingManagerInternal> available in ProjectScopeServices.
    祝融夫人OR:解决了么,我也报这个错误
  • 李斯维: Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
    java.lang.IllegalStateException: buildToolsVersion is not specified.

    出现这个问题,怎么解决?

  • 程序亦非猿:不需要吧 具体你的情况我也不太知道 sorry
  • 李斯维:有个问题想问一下作者,我昨天晚上10点左右`Add to Jcenter`,现在都已经第二天10点了,还没有看到消息,会这么慢么?我需不需要重新提交一下。
    另外,在旁边的 Maven build settings 中我看到了三个 依赖选项 ` Choose dependency snippet: Maven | Gradle | Ivy`,这三个在包没有 `Add to Jcenter` 的时候是无法使用的么?
    希望大神不吝赐教
  • ed7ea71d7b42:Execution failed for task ':Android-Useful-Utils:bintrayUpload'.
    > org.apache.http.NoHttpResponseException: The target server failed to respond
    请问这个没有http响应是什么原因呢
    程序亦非猿:@ed7ea71d7b42 不清楚诶
  • SingorZhu:谢谢分享,想请教一下,如果是上传私有库呢?是不是只把library上传到maven然后在gradle里面通过唯一的url去访问就算是私有库?
    程序亦非猿: @SingorZhu 上传了就算是共有啦 大家都可以访问了
  • 79e7c2afb550:Could not create package HTTP/1.1 401 Unauthorized [message:This resource requires authentication]
    耳后烟雨:@bigger01 兄弟,我也遇到了你这个问题,已经解决了。看这里:http://blog.csdn.net/small_lee/article/details/52328613
  • 79e7c2afb550:install的时候打印一堆堆???的乱码
    李斯维:@bigger01 代码里面是不是写了很多中文注释
  • 513bf0f011b3:感谢分享。

    我遇到一个问题Gradle DSL method not found:'developers()',楼主能帮我看看么?谢谢了 :blush:
    513bf0f011b3:@程序亦非猿 谢谢楼主,我换了好几个版本都不行,因为我对gradle一点都不了解。。。

    不过我找到另外一个方法解决了,如果有和我一样小白的,可以去这里看看
    http://www.androidchina.net/4354.html
    程序亦非猿: @awp321 应该是版本不对
  • 4677ccb19308:上传成功了,却在项目中gradle同步失败 =。=,有遇到过的么
  • xingstarx:挺好的,点32个赞。。
    程序亦非猿:@8af77293bc65 谢谢
  • fc7075357f97:原来jfrog bintray是中央仓库,为什么上去要翻墙,用gradle添加依赖库却不用?新人求科普 :sweat:
    程序亦非猿:@TellHMax 需要翻墙么 - - 不用吧
  • 后厂村追寻:为什么我的到97%就不动了呢
    后厂村追寻:好了 ,宝宝;
    后厂村追寻:@程序亦非猿 不是啊 ,翻墙了(成功)
    程序亦非猿:@草莓的味道 网络问题么?
  • GeekBug:给力 已经用上了
    程序亦非猿:@F1ReKing 哈哈 棒棒的
  • 0dcc0e483842:之前一直报错 就在apply plugin: 'com.github.dcendents.android-maven'这句话,
    然后下载了个最新的gradle-2.8就解决问题了(原来的版本是2.2.1)
    程序亦非猿:@胖小了个花 原来如此
  • 王神仙:非常不错
    程序亦非猿:@4d0de341b167 谢谢 如果喜欢 点个赞 哈哈
  • ningso:很好赞赞赞
    程序亦非猿:@ningso 谢谢
  • dongorigin:太给力了
    程序亦非猿:@dongorigin 谢谢支持
  • alighters:入门了 给力
    程序亦非猿: @lighters 谢谢支持

本文标题:将Library上传到Jcenter

本文链接:https://www.haomeiwen.com/subject/rdepcttx.html