Gradle发布Android开源项目到JCenter

喜欢做些开源项目的朋友,相信有不少人都希望能把自己的项目发布到公共的中央仓库,如maven中央仓库,以供别人方便地集成使用。而使用了Android Studio的同学,应该也对gradle和jcenter印象深刻,不少开源库都是发布到这里的。这一篇就主要来介绍一下,如何使用Gradle发布到jcenter。

一  注册账号

 (1)没有Bintray账号的同学先去https://bintray.com注册一个账号吧(你也可以使用第三方登录Github,Google,企业邮箱等);

201612081824007574.png

(2)注册

201612081824011588.png

(3)提交注册信息

201612081824012389.png

(4)创建组织和仓库

201612081824016062.png

(5)填写基本信息

201612081824017654.png注册到此为止;

二 配置项目

(1)在project的build.grald添加

 classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'

201612081824018543.png

(2)module里面添加

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

201612081824022264.png

(3)Module的build.gradle里面添加如下代码,注意注释

version = "1.0.7"    //这个是版本号,必须填写
def siteUrl = 'https://github.com/nanchen2251/CalendarView' // 项目的主页
def gitUrl = 'https://github.com/nanchen2251/CalendarView' // Git仓库的
urlgroup = "com.nanchen.calendarview" // 这里是groupId ,必须填写  一般填你唯一的包名
install {
    repositories.mavenInstaller {       
     // This generates POM.xml with proper parameters       
      pom {
            project {
                packaging 'aar'         // 项目描述,复制我的话,这里需要修改。
                name 'a view with the lunar calendar'   //项目描述        
                url siteUrl           // 软件开源协议,现在一般都是Apache License2.0吧,复制我的,这里不需要修改。     
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }   
                //填写开发者基本信息,复制我的,这里需要修改。              
                developers {
                    developer {
                        id 'nanchen'            //你公司的id
                        name 'nanchen2251'      //你的用户名
                        email '[email protected]' // 你的邮箱        
                              }
                }                
                // SCM,复制我的,这里不需要修改。             
                   scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}
// 生成jar包的task,不需要修改。
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'}// 生成javaDoc的jar,不需要修改task javadoc(type: Javadoc) {
    options.encoding = "UTF-8"
    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
}
//下面设置编码格式,重点注意,如果不设置可能会在gradlew install的时候出现GBK编码映射错误javadoc {
    options {
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
        title 'A CalendarView Support Lunar Calendar For Android'   // 文档标题   
         }
}
artifacts {//    archives javadocJar    archives sourcesJar
}
// 生成jar包task
 releaseJar(type: Copy) {
    from( 'build/intermediates/bundles/release')
    into( '../jar')
    include('classes.jar')
    rename('classes.jar', 'okgo-' + version + '.jar')
}
// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,
// 所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {    
    //读取 local.properties 文件里面的 bintray.user
    user = properties.getProperty("bintray.user")   
    //读取 local.properties 文件里面的 bintray.apikey
    key = properties.getProperty("bintray.apikey")
    configurations = \['archives'\]
    pkg {
        userOrg = "nanchen"        //发布到JCenter的组织,注意新版本的bintray是需要手动创建的
        repo = "maven"              //发布到JCenter上的仓库名称,注意新版本的bintray是需要手动创建的        // 发布到Bintray上的项目名字
        name = "calendarview-library"
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = \["Apache-2.0"\]
        publish = true  // 是否是公开项目      }
}

 这里还需要将你的bintray用户名和apikey写到工程的local.properties文件中

// 示例值, 仅供参考
bintray.user=h3 // your bintray user name
bintray.apikey=c543427****dd35d1a0123459981225564155753 // your bintray api key

20150126092533531.png

(4)注意事项

注意:上面的userOrg是组织(organization)的id(上面创建过的),很多帖子都没有这个或者写的是用户名,新版本要使用你创建的组织名称,否则失     败;repo是仓库(repository)的名称(上面创建的),我当初就是看的帖子这里说的不清楚怎么也不能成功;如果忘记了,则可以这样查看,组织对应id,仓库对应repo,项目对应上面的name;  

201612081824024432.png

(5)android studio的命令行操作Terminal工作空间输入gradlew install

201612081824025360.png

(6)命令行输入gradlew bintrayUpload上传到bintray仓库。

201612081824034062.png

(7)一切准备就绪,你这时候已经可以在bintray中看到你的库了,最后点击Add to Jcenter申请审核吧;

201612081824036533.png

(8)发送审核请求

201612081824037647.png

填下你的groupId,直接send,就会发起一个打包版本的请求, 
过几个小时,通过jcenter那边的审核就会在bintray上收到jcenter那边的同意消息提醒。 
恭喜你,你的类库上传到jcenter成功了!大家都可以用你的类库了。