Gradle发布Library到JCenter

之前工作的时候,认为只用关注代码本身就可以,将代码写好,其他的都不需要关心,但是这个认识的狭隘的,任何可以提升我们开发效率的工具或者语言我们都应该适当的去关注一下。
平常在工作中我们常常会引用到第三方的开源库,比如Fresco、EventBus等。在gradle中用compile引用:

compile 'io.reativex:rxjava:1.1.3'

是不是感觉这样非常方便,如果我们有自己维护的工具库,在不同的工程中使用这种方法,不用重复复制代码。不仅方便了我们自己,也可以让更多的人使用你写的库。

JCenter和Bintray

jCenter是一个由bintray维护的Maven仓库,大家可以把aar文件以及一些文档描述文件的东西打包上传到jcenter服务商,其他人就可以通过jcenter服务器下载到你上传的包了。在项目根目录的build.gradle文件中如下定义仓库,就能使用jcenter了。

allprojects {
    repositories {
        jcenter()

注册账号

如果没有Bintray账号,需要先注册一个。这里需要注意的是,国内的qq和网易邮箱都不行,应该需要国外的邮箱地址,如果你的github邮箱地址也是国内的,也是需要更改的。这里我卡了很久。

注册好账号后,需要创建新的目录

到此为止,我们就完成第一步。

配置项目

在android studio项目的根目录添加

 dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        // 这里使用的novoda
        classpath 'com.novoda:bintray-release:0.5.0'
    }

在module里的build.gradle顶部添加:

apply plugin: 'com.novoda.bintray-release'//添加
apply plugin: 'maven'

这样就依赖了novoda,在build.gradle
还需要添加:

//添加
publish {
    userOrg = 'knight'//bintray.com用户名
    groupId = 'com.knight'//jcenter上的路径
    artifactId = 'basetools'//项目名称
    publishVersion = '1.0.5'//版本号
    desc = 'this is a tools'//描述,不重要
//    publications = 'maven' //  用于上传的publication名称列表。 默认值为['maven'],这是这个插件为你创建的一个publication。
    website = 'https://github.com/296777513/Common'//网站,不重要;尽量模拟github上的地址,例如我这样的;当然你有地址最好了
}

/**
 * 如果没有这段代码,将不支持中文注释
 */
allprojects {
    tasks.withType(Javadoc) {
        options {
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}

这样就配置完成了,很简单吧,比较难的可能是在注册binary。然后在Android stuio中的Terminal执行下面的代码就可以了:

/**
* PbintrayUser 用于上传的用户名
* PbintrayKey 用于上传的key,上面的图已经有获取图的步骤了
* PdryRun 如果设置为“true”,则将运行所有内容,但不会将包上传到bintray。 如果“false”,那么它将正常上传
**/
./gradlew clean build bintrayUpload  -PbintrayUser=hyman -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false

如果最后显示BUILD SUCCESSFUL就代表已经上传成功了,如果没有检查一下log,逐一解决就ok了。
然后 打开bintray就可以看到你的项目了


点击进入该库,点击Add To jecnter,然后随便写一下对你的该库的描述,然后点击发送就可以了。等待成功后就可以直接引用你的项目了。

你可能感兴趣的:(Android)