Android 上传项目到Jcenter

Posted 麦田里的守望者-Jiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 项目的上传配置文件

以上是关于Android 上传项目到Jcenter的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 项目上传到Jcenter完全攻略

Android Gradle plugin 开发并上传到JCenter

Android Gradle plugin 开发并上传到JCenter

Android将Library上传到jcenter超简单完整步骤以及遇到的各种坑

Android 使用bintray将本地库上传到JCenter做maven依赖库

Android 使用bintray将本地库上传到JCenter做maven依赖库