Android Studio Gradle上传项目到JCenter

本文在简书同步更新:https://www.jianshu.com/p/3b5f2358de1b

发布项目到jcenter可以通过两个插件,一种是gradle-bintray-plugin,另外一种是bintray-release,各有优劣,大家按照个人喜好使用, 本文主要介绍gradle-bintray-plugin。

一、注册个人账户

1、首先登陆https://bintray.com/,请注意,还没有开始,第一个大坑就已经来袭,请不要选择首页的绿色按钮,这是面向企业版,试用30后要收费的,而且也会有一些未知的问题,我们选择红色椭圆圈里面的source account进入。

Android Studio Gradle上传项目到JCenter_第1张图片

2、可以使用github google等网站账号授权登录,本文使用的直接注册,注意不要使用国内的一些邮箱(qq,新浪,163等都不好使),以免到时候验证邮箱或者密码比较麻烦。
Android Studio Gradle上传项目到JCenter_第2张图片

3、注册登录后的界面如下,点击右上角的Edit Profile进入个人页面。
Android Studio Gradle上传项目到JCenter_第3张图片

4、获取APIKey,保存,到时候上传要用到。
Android Studio Gradle上传项目到JCenter_第4张图片

二、用Android Studio建立一个简单的插件

1、新建一个项目TestPlugin(名字随意),再新建一个module(library),类型选择Android Library
Android Studio Gradle上传项目到JCenter_第5张图片
2、将src/main下的目录全部删除,创建一个新的目录groovy,接着根据module的包名创建目录,比如我的module包名是com.plugin.gradle.library,那么就按照这个目录创建。之后在该目录下创建一个以groovy后缀名的文件TestPlugin.groovy,作用是打印出一行字,目的是检验插件是否能运行。大家直接copy就好,因为代码没有自动提示,需要手写,项目结构和代码如下
Android Studio Gradle上传项目到JCenter_第6张图片
3、在main目录下创建resources目录,在这个目录下创建META-INF/gradle-plugins, 在目录里面我们再创建名为library.properties的文件,文件名library就是以后给别人引用的插件名。在该文件添加代码:
implementation-class = com.plugin.gradle.library.TestPlugin
Android Studio Gradle上传项目到JCenter_第7张图片

三、配置gradle(重要)

1、先配置好主项目的build.gradle,这里需要引入两个依赖
Android Studio Gradle上传项目到JCenter_第8张图片
为了让gradle更明显的区分,这里将项目的结构切换成Android的结构,可以在build.gradle后面灰色字体明显看到该项目有三个gradle,分别是Project:TestPlugin、module:app、module:library。我们现在用的是Project级别的gradle,配置好gradle顺便同步一下项目,AS自动帮我们下载依赖。

2、配置module:library里面的gradle,因为我们最终上传的是这个插件,所以重要的信息都包含在里面。

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

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

version = "0.0.1" //版本

def siteUrl = 'https://github.com/'    // 项目主页
def gitUrl = 'https://github.com/' //  git

group = "com.plugin.gradle"  

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
}


install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                name 'Android Library'
                url siteUrl

                //用apache2.0
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                //开发者基本信息
                developers {
                    developer {
                        id 'pao fan'
                        name 'pao fan'
                        email '[email protected]'
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}


Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    /**
     * 用户名和key,这两个信息一般会保存在local.properties里面,只保留在本地,不上传到仓库。
     */
    user = properties.getProperty("bintrayUser")
    key = properties.getProperty("bintrayApiKey")
    println user
    println key
    configurations = ['archives']
    pkg {
        repo = "Maven"               //跟上面创建的Maven仓库名字保持一致
        name = "library"                //发布到JCenter上的项目名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

用户名和key存放如下,只是示例,大家请使用自己的账号信息 - -,这个文件记得.gitignore忽略不要上传。

Android Studio Gradle上传项目到JCenter_第9张图片

四、上传插件

我们到底怎么上传这个插件呢,其实有两种方法,但本质上是一样的,可以使用工具,或者使用命令行。
1、使用gradle快捷工具
Android Studio Gradle上传项目到JCenter_第10张图片
第一步,在右上角侧边栏找到Gradle,点击打开,在目录中展开library-other,双击install运行
Android Studio Gradle上传项目到JCenter_第11张图片
第二步如图展开publishing,双击bintrayUpload运行。
Android Studio Gradle上传项目到JCenter_第12张图片
打开Messages,当你看到BUILD SUCCESSFUL,就代表已经上传成功啦。

Information:Gradle tasks [bintrayUpload]
Information:BUILD SUCCESSFUL
Information:Total time: 20.01 secs
Information:0 errors
Information:0 warnings
Information:See complete output in console

2、使用命令行
也可以在AS自带的Terminal使用命令行,先要配置gradle的环境变量才能使用,像JDK一样。

gradew javadocJar
gradew sourcesJar
gradew install
gradew bintrayUpload

五、Add to JCenter

1、上传成功后,在个人首页可以看到如下信息,Maven就是已经上传的仓库。
Android Studio Gradle上传项目到JCenter_第13张图片
2、点击Maven进入,这里有两个包,library就是刚刚上传的插件。
Android Studio Gradle上传项目到JCenter_第14张图片
3、但现在还不能使用,需要点击library进入,选择红框Add to JCenter,等待后台审核便能使用。

Android Studio Gradle上传项目到JCenter_第15张图片
简单粗暴,直接send就可以,接下来等待半天或者一天就可以审核通过。
Android Studio Gradle上传项目到JCenter_第16张图片

4、使用方式

compile 'com.plugin.gradle:library:0.0.1'

六、总结

主要的步骤就是:
1.创建账号
2.编写插件(或者随意写一个module)
3.编写module的build.gradle
4.上传,等待审核

总的来说不难,需要大家去实践,那么,本文到此结束。

你可能感兴趣的:(JCenter)