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_USERNAME
和 BINTRAY_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'
参考
- 张鸿洋博客:Android 快速发布开源项目到jcenter
- bintray官方文档:gradle-bintray-plugin
- JakeWharton 的 butterknife 项目的上传配置文件
以上是关于Android 上传项目到Jcenter的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 项目上传到Jcenter完全攻略
Android Gradle plugin 开发并上传到JCenter
Android Gradle plugin 开发并上传到JCenter
Android将Library上传到jcenter超简单完整步骤以及遇到的各种坑