使用Gradle发布项目到JCenter仓库

将自己的东西发布到网上会仓库让大家用是一个很好的事情,相信还有相当的一部分人还没不知道怎么将自己的代码贡献出来让别人用compile’ ’ 这样去引用,今天我就以一个例子去教大家做这件事。

一、申请Bintray账号

Bintray的基本功能类似于Maven Central,一样的我们需要一个账号,Bintray官网注册完成后第一步算完成了。不过在首页注册有两个选项务必选择框中的选项如下图:
这里写图片描述
否则你在最后执行上传的时候会报下图错误:
这里写图片描述
HTTP/1.1 404 Not Found [message:Repo ‘maven’ was not found]
很多人说出了一种出现这种错误的情况就是用户名设置错误,但是选错注册选项还没有人知道。如果已经注册错误请@我

二、配置工程根目录下的Gradle

直接上代码


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

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

android-maven-gradle-plugin地址奉上,假如出现什么问题在这是可以找到正确的引用方式。

然后就是配置Moudle里面的build.gradle文件,我的配置如下

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


version = "1.0.0"
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    resourcePrefix "hello"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName version
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}


def siteUrl = 'https://github.com/CrazyHan/test' // 项目的主页,改成自己的就行
def gitUrl = 'https://github.com/CrazyHan/test.git' // Git仓库的url,改成自己的就行
group = "com.hsl.adapter" // 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 Universal ListViewAdapter' //项目描述
                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 'hanshenglong'    //填写的一些基本信息,写自己的就行
                        name 'hanshenglong'
                        email 'hanshenglong001@126.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")//这里是引用local.properties文件里面配置的用户信息,在创建工程的时候自动生成的.gitignore会过滤掉local.properties
    key = properties.getProperty("bintray.apikey")
    configurations = ['archives']
    pkg {
        repo = "maven"
        name = "UniversalListAdapter"    //发布到JCenter上的项目名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.1'
//    compile 'com.github.dcendents:android-maven-gradle-plugin:1.5'
    testCompile 'junit:junit:4.12'
}

配置好上述后需要在你的项目的根目录上的local.properties文件里(一般这文件需gitignore,防止泄露账户信息)配置你的bintray账号信息,your_user_name为你的用户名,your_apikey为你的账户的apikey,可以点击进入你的账户信息里再点击Edit即有查看API Key的选项,把他复制下来。

bintray.user=your_user_name
bintray.apikey=your_apikey

Rebuild一下项目,如果没有报错就可以进行下一步了
进入工程根目录或者在Android Studio下面的Terminal执行命令行

gradlew install

Windows第一次执行有可能进行下载
然后执行

gradlew bintrayUpload

有可能出现Execution failed for task ‘:core:mavenAndroidJavadocs’.

Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): ‘/Users/zhou/git/app/core/build/tmp/mavenAndroidJavadocs/javadoc.options’

因为在上传过程中执行了javadoc检查,所以可能会报上面的错误。解决方法就是避免javadoc的检查,在项目根目录下的gradle下面就要添加如下配置:

allprojects {
    repositories {
        jcenter()
    }
    tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }
}

然后就是等待输出成功信息,这时候在Jcenter上面看到自己刚上传的项目,然后如图:
这里写图片描述
这里写图片描述
最后就是等待自己的项目上线啦。

http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html
http://blog.csdn.net/tmac2000/article/details/53261141

阅读更多
文章标签: gradle 发布 jcenter
个人分类: Android Studio Android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭