Android 上传项目到Jcenter

注册账号

登陆 https://bintray.com/ 网站注册账号,需要注意的是:

  • 要选择免费版注册,不要选择企业版。
  • 邮箱不要选择国内邮箱,国内邮箱注册不了,可以用Gmail 邮箱。
  • 建议直接使用第三方 Github 或 Google 账号注册。

另外,国内访问 https://bintray.com/ 网站很慢,很有可能访问不了。

Add New Repository(创建仓库)

登录账号,在主页选择Add New Repository

打开新页面后,填写新建的仓库信息:

上面菜单选项含义:

  • Name:仓库的名字
  • Type:仓库的类型,这里必须选择 maven (在后面添加的依赖的插件就是上传到maven仓库)
  • Description:仓库描述,可以不填写

点击 Create 按钮,回到主页会看到Add New Repository下有你刚才新建的仓库。

Add to Package(创建包)

点击上面新建的仓库,进入仓库主页,选择Add to Package,然后填写要上传的项目信息:

上面菜单选项含义:

  • Name:要上传的项目的名字
  • Description:要上传的项目的描述
  • Licensens:选择 apache-2.0
  • Website:项目 Github 地址
  • Version Control:项目 git 地址

注意:这里创建包填写的信息就是要上传的项目信息,所以慎重慎重。

API Key

选择账号 → Edit Your Profile → API Key:

API Key 用于账号验证,在上传项目的时候需要用到,复制API Key 并保存下来。


上传项目

上传 library 和 plugin 的方式有些不同,这里选择了两种方式,其实用第二种既能上传Android library 或 Java library,也能上传Android Plugin 或 Java Plugin。

上传 Android library 或 Java library

添加依赖

首先,在项目 builde.gradle 文件中的buildscript中添加:

buildscript {
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } //在国内可能下载不了相应文件,可以添加这个阿里云仓库地址,帮助下载
    }
    dependencies {
        classpath 'com.novoda:bintray-release:0.9.1' //新添加插件,并保持最新版本
    }
}

其次,在项目的gradle文件夹下新建上传配置文件名字.gradle,这里新建一个gradle-bintray-publish.gradle文件,它的内容如下:

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

publish {
    userOrg =  USER_ORG //引用的是项目的 `gradle.properties` 文件中的环境变量,下面类似,后面会对 `gradle.properties` 文件做解释
    groupId = GROUP_ID
    artifactId = ARTIFACT_ID
    publishVersion = VERSION
    desc = DESCRIPTION
    website = WEBSITE
}

//构建 sources.jar 和 javadoc.jar 并上传
if (project.getPlugins().hasPlugin('com.android.application') ||
        project.getPlugins().hasPlugin('com.android.library')) {
    task androidJavadocs(type: Javadoc) {
        source = android.sourceSets.main.java.source
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }

    task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
        classifier = 'javadoc'
        from androidJavadocs.destinationDir
    }

    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.source
    }
} else {
    task sourcesJar(type: Jar, dependsOn:classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }

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

if (JavaVersion.current().isJava8Compatible()) {
    allprojects {
        tasks.withType(Javadoc) {
            options.addStringOption('Xdoclint:none', '-quiet')
        }
    }
}

artifacts {
    if (project.getPlugins().hasPlugin('com.android.application') ||
            project.getPlugins().hasPlugin('com.android.library')) {
        archives androidSourcesJar
        archives androidJavadocsJar
    } else {
        archives sourcesJar
        archives javadocJar
    }
}

gradle/gradle-bintray-publish.gradle 文件可以上传到 GitHub。

然后,在项目的 gradle.properties 文件中添加:

USER_ORG=wangjiang7747 //在 https://bintray.com/ 网站上中申请的账号

GROUP_ID=com.wangjiang //类似 implementation 'com.android.support:appcompat-v7:28.0.0' 中的 com.android.support

ARTIFACT_ID=comment-doc //类似 implementation 'com.android.support:appcompat-v7:28.0.0' 中的 appcompat-v7

VERSION=0.0.3 //类似 implementation 'com.android.support:appcompat-v7:28.0.0' 中的 28.0.0

DESCRIPTION='this a tool that helps developer check the project\'s api easily by generating java and html document . moreover, it can standardize the java class comment.' //项目描述信息

LICENSE_APACHE=apache-2.0 //许可证

WEBSITE=https://github.com/wjrye/comment //项目 git 地址

gradle.properties 文件的作用:本地环境变量配置,存储一些敏感数据,不用上传到 GitHub。

最后,在要上传的 Module 的build.gradle 中添加:

apply from: rootProject.file('gradle/gradle-bintray-publish.gradle')

开始上传

运行命令:

./gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false

BINTRAY_USERNAMEBINTRAY_KEY 就是在https://bintray.com/网站上申请的账号和 API Key。

运行命令结束后,到https://bintray.com/ 网站查看是否上传成功。


上传Android Plugin 或 Java Plugin

添加依赖

首先,在项目的 builde.gradle 文件中的buildscript中添加:

buildscript {
    repositories {
       maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } //在国内可能下载不了相应文件,可以添加这个阿里云仓库地址,帮助下载
    }
    dependencies {
        classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4" //新添加插件,并保持最新版本
    }
}

同样,在项目的gradle文件夹下新建上传配置文件名字.gradle,这里新建一个gradle-bintray-publish.gradle文件,它的内容如下:

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

publishing {
    publications {
        MyPublication(MavenPublication) {
            from components.java
            groupId GROUP_ID
            artifactId ARTIFACT_ID
            version VERSION
        }
    }
}

group = GROUP_ID
version = VERSION

bintray {
    user = BINTRAY_USER // bintray账号,需要在`gradle.properties` 文件添加环境变量配置
    key = BINTRAY_API_KEY // bintray API Key,需要在`gradle.properties` 文件添加环境变量配置
    configurations = ['archives']
    publications = ['MyPublication'] //就是上面 "publishing {publications {"  下的 “MyPublication”
    pkg {
        repo = 'maven' // bintray 仓库地址
        name = ARTIFACT_ID
        userOrg = USER_ORG
        licenses = ['Apache-2.0']
        vcsUrl = VCS_URL
        labels = ['Android'] // 插件标签
        publicDownloadNumbers = true
        publish = true
        version {
            name = VERSION
            desc = DESCRIPTION
            vcsTag = VERSION
            attributes = ['gradle-plugin': 'com.wangjiang:check-file-plugin'] //'com.wangjiang:check-file-plugin 就是classpath 配置的内容
        }
    }
}

//构建 sources.jar 和 javadoc.jar 并上传
if (project.getPlugins().hasPlugin('com.android.application') ||
        project.getPlugins().hasPlugin('com.android.library')) {
    task androidJavadocs(type: Javadoc) {
        source = android.sourceSets.main.java.source
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }

    task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
        classifier = 'javadoc'
        from androidJavadocs.destinationDir
    }

    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.source
    }
} else {
    task sourcesJar(type: Jar, dependsOn:classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }

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

if (JavaVersion.current().isJava8Compatible()) {
    allprojects {
        tasks.withType(Javadoc) {
            options.addStringOption('Xdoclint:none', '-quiet')
        }
    }
}

artifacts {
    if (project.getPlugins().hasPlugin('com.android.application') ||
            project.getPlugins().hasPlugin('com.android.library')) {
        archives androidSourcesJar
        archives androidJavadocsJar
    } else {
        archives sourcesJar
        archives javadocJar
    }
}


gradle/gradle-bintray-publish.gradle 文件可以上传到 GitHub。

同样,在项目的 gradle.properties 文件中添加:

USER_ORG=wangjiang7747

GROUP_ID=com.wangjiang 

ARTIFACT_ID=插件名字

VERSION=版本号

DESCRIPTION=这是项目描述信息

LICENSE_APACHE=许可证

WEBSITE=项目 Github 地址

VCS_URL=项目 git 地址

BINTRAY_USER=bintray 账号

BINTRAY_API_KEY=bintray API Key

最后,同样在要上传的 Module 的build.gradle 中添加:

apply from: rootProject.file('gradle/gradle-bintray-publish.gradle')

开始上传

运行命令:

./gradlew clean build bintrayUpload

运行命令结束后,到https://bintray.com/网站查看是否上传成功。


上传项目后的一些操作

是否可以正常下载

进入仓库主页,再进入包主页,查看菜单Files下是否有你上传的文件。

仓库地址:
在这里插入图片描述
右上角的地址:https://dl.bintray.com/wangjiang7747/maven 就是你的仓库地址。

将仓库地址添加到本地项目中,查看是否能正常下载。

buildscript {
    repositories {
        maven { url '你的仓库地址' } 
    }
    dependencies {
      
    }
}

删除文件

如果想删除新建的包或不再使用的包,可以点击对应包右边的 Edit 按钮:
在这里插入图片描述
然后,在Edit Package 右边点击 Delete 按钮就可以删除了:
在这里插入图片描述

如果想删除上传的文件,可以点击对应文件右边的 Delete 按钮:
在这里插入图片描述

发布到Jcenter

当确定项目没有问题后,就可以将项目发布到jcenter。

选择对应包主页右上角菜单 Actions → Add to Jcenter:

发布后会收到邮件,等待审核通过。通过之后,就可以直接通过jcenter下载了。直接在Module 中添加依赖:

implementation 'group:name:version'

参考

  1. 张鸿洋博客:Android 快速发布开源项目到jcenter
  2. bintray官方文档:gradle-bintray-plugin
  3. JakeWharton 的 butterknife 项目的上传配置文件

猜你喜欢

转载自blog.csdn.net/wangjiang_qianmo/article/details/103283259