码迷,mamicode.com
首页 > 移动开发 > 详细

使用Android Studio将开源库发布到Jcenter中央库

时间:2015-07-28 10:51:26      阅读:355      评论:0      收藏:0      [点我收藏+]

标签:repositories   android   jcenter   maven   github   

首先在 https://bintray.com 注册一个账号,登录后然后从其后台获得一个API Key
技术分享

技术分享

在你的项目根目录下的build.gradle文件中加入依赖,最后文件内容就变成了这样子。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath ‘com.android.tools.build:gradle:1.2.3‘
        classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0‘
        classpath ‘com.github.dcendents:android-maven-plugin:1.2‘
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

在根目录下新建一个gradle文件,将其命名为bintray.gradle,其内容如下

group = PROJ_GROUP
version = PROJ_VERSION
project.archivesBaseName = PROJ_ARTIFACTID

apply plugin: ‘com.jfrog.bintray‘
apply plugin: ‘maven-publish‘

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = ‘sources‘
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += configurations.compile
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = ‘javadoc‘
    from javadoc.destinationDir
}

javadoc {
    options{
        encoding "UTF-8"
        charSet ‘UTF-8‘
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
        title PROJ_ARTIFACTID
    }
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

def pomConfig = {
    licenses {
        license {
            name "The Apache Software License, Version 2.0"
            url "http://www.apache.org/licenses/LICENSE-2.0.txt"
            distribution "repo"
        }
    }
    developers {
        developer {
            id DEVELOPER_ID
            name DEVELOPER_NAME
            email DEVELOPER_EMAIL
        }
    }
    //这里有引号,并且有个空格,否则生成不了依赖,主要是这里的dependencies并不是build.gradle里的dependencies,而gradle会把他当成自身的dependencies处理
    "dependencies " {
        dependency{
            groupId "com.alibaba"
            artifactId "fastjson"
            "version " "1.2.6"
            //同dependencies
        }
    }

}

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifactId PROJ_ARTIFACTID

            pom{
                packaging ‘aar‘
            }
            pom.withXml {
                def root = asNode()
                root.appendNode(‘description‘, PROJ_DESCRIPTION)
                root.children().last() + pomConfig
            }
        }
    }
}

bintray {
    Properties properties = new Properties()
    properties.load(project.rootProject.file(‘local.properties‘).newDataInputStream())

    user = properties.getProperty(‘BINTRAY_USER‘);
    key = properties.getProperty(‘BINTRAY_KEY‘);



    configurations = [‘archives‘]
    publications = [‘mavenJava‘]
    publish = true

    pkg {
        repo = ‘maven‘
        name = PROJ_NAME
        desc = PROJ_DESCRIPTION
        websiteUrl = PROJ_WEBSITEURL
        issueTrackerUrl = PROJ_ISSUETRACKERURL
        vcsUrl = PROJ_VCSURL
        licenses = [‘Apache-2.0‘]
        publicDownloadNumbers = true
    }
}

需要注意的是如果你的项目依赖了第三方库,则你也需要加入,比如这里我引用了fastjson,在对应的位置加入依赖代码即可,就像下面这样子,唯一需要注意的就是dependencies 和version 需要用引号扩住,并且后面留一个空格,原因是因为这两个关键字默认会有动作执行,这里投机取巧的将问题解决

"dependencies " {
    dependency{
        groupId "com.alibaba"
        artifactId "fastjson"
        "version " "1.2.6"
    }
}

然后在你的库module下的build.gradle的最后面加入应用该文件的代码,注意这里的build.gradle是module下的而并非根目录下的。

apply from: ‘../bintray.gradle‘

最后,将对应的变量进行配置即可。在根目录下的gradle.properties文件中加入属性,属性中使用

compile ‘com.android.support:appcompat-v7:22.2.0’

做样例

PROJ_GROUP=这里改成groupId,比如com.android.support
PROJ_VERSION=这里改成库版本,比如22.2.0
PROJ_NAME=这里改成库名字,比如appcompat
PROJ_WEBSITEURL=这里改成github地址,比如https://github.com/android/appcompat
PROJ_ISSUETRACKERURL=这里改成issue地址,比如https://github.com/android/appcompat/issues
PROJ_VCSURL=这里改成版本控制地主,比如https://github.com/android/appcompat.git
PROJ_DESCRIPTION=这里改成库的描述信息
PROJ_ARTIFACTID=这里改成库的标示,比如appcompat-v7

DEVELOPER_ID=这里改成开发者id,比如
DEVELOPER_NAME=这里改成开发者名字,比如android
DEVELOPER_EMAIL=这里改成开发者邮箱,比如someone@android.com

然后在项目根目录下local.properties中增加两个重要属性,一个是之前注册的账号,一个是账号后台的api key,这个文件不要加入版本控制,存在本地即可。

BINTRAY_KEY=你的API KEY
BINTRAY_USER=你的用户名

之后使用android studio进行gradle的task 构建,添加了上面的内容后,你的gradle会多出好几个task。点击android studio右侧的gradle

技术分享

在你的库文件展开后会有一个publishing/bintaryUpload的task,双击执行它,如果没有错误,就可以在你的后台发现已经上传了。这里避免出错,在执行这个task之前,首先执行三个task生成必须的文件,即other中的javadocJar和sourcesJar以及publishing中的generatePomFileForMavenJavaPublication,目的是生成javadoc.jar,sources.jar以及pom.xml文件,确保build successful后再执行publishing下的bintrayUpload的task,这样就上传到你的后台了。

技术分享

点击你上传的包,进入管理页面

技术分享

点击右下角的add to jcenter,直接提交进行审核。这里我已经通过审核了,所以显示的是link to等信息。审核通过后,你就可以直接在gradle中引用了,就拿我这个项目来说就是

compile "cn.edu.zafu:corepage:0.0.1"

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Android Studio将开源库发布到Jcenter中央库

标签:repositories   android   jcenter   maven   github   

原文地址:http://blog.csdn.net/sbsujjbcy/article/details/47100457

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!