本文目的是记录将 Android 代码上传到 JCenter 的一般步骤,备忘之用。
示例上传代码是一个 gradle 插件工程
上传代码到 JCenter 的准备工作
- JCenter 的网址 https://bintray.com/
- 登录账户/注册账户
- 需要用到的基本信息有:用户名、秘钥
Gradle 文件配置
- 根目录的
build.gradle文件中添加classpath依赖(版本号根据实际版本号修改)
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.3.1'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
- 编写上传到 JFrog 的配置文件
bintray.gradle,放置于项目根目录下(或者直接将该文件内容写到待上传module的build.gradle文件中也是一样的效果),配置细节看注释所示
// 应用插件
apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'
//个人网页地址
def baseUrl = 'https://github.com/liulinru13'
def siteUrl = baseUrl
//git仓库地址
def gitUrl = "${baseUrl}/PngquantGradlePlugin"
//git仓库issues地址
def issueUrl = "${baseUrl}/issues"
install {
repositories {
mavenInstaller {
// This generates POM.xml with proper paramters
pom.project {
//添加项目描述
//项目名称
name 'pngcompress'
url siteUrl
//设置开源证书信息
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
//添加开发者信息
developers {
developer {
name 'mmrx'
email 'liulinru13@126.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
//配置上传Bintray相关信息
bintray {
user = BINTRAY_USER
key = BINTRAY_KEY
configurations = ['archives']
pkg {
repo = 'pngquantGradlePlugin' // 上传到中央仓库的名称
name = 'pngcompress' // 上传到jcenter 的项目名称
desc = '基于pngquant命令行工具的png图片压缩插件' // 项目描述
websiteUrl = siteUrl
issueTrackerUrl = issueUrl
vcsUrl = gitUrl
labels = ['gradle', 'plugin'] //标签
licenses = ['Apache-2.0']
publish = true
}
}
代码中的
BINTRAY_USER和BINTRAY_KEY分别指的是之前在 JFrog 上的用户名和秘钥,这里不直接用明文是由于考虑到安全性,需要保密,我将其放在了根目录下的gradle.properites中,在.gitignore选择了不上传这个文件,当然也可以放到其他的配置文件中。
- 在要上传到仓库的
module下的build.gradle文件中,应用bintray.gradle中的配置信息,文件最上方添加下方的代码。其中,group和version和之前的一样,artifactId无法定义,默认为项目名。除此之外,还需要将源文件和javadoc文件一并打成 jar 包,这里需要新增两个Task来处理
apply plugin: 'groovy'
apply plugin: 'maven'
// 应用插件
apply from: '../bintray.gradle'
//uploadArchives{
// repositories{
// mavenDeployer{
// repository(url: uri('../repos'))
// }
// }
//}
repositories{
jcenter()
}
group = "com.mmrx.pngcompress"
version = '1.0.1'
dependencies{
implementation gradleApi()
implementation localGroovy()
}
task sourcesJar(type: Jar) {
from sourceSets.main.groovy.srcDirs
classifier = 'sources'
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
需要注意的是,后面上传到 JCenter 时,需要包含.pom文件、二进制的jar包,还需要包含源码jar包,至于 javadoc 的jar包则是可选的,否则点击
Add to JCenter按钮之后不久就会收到上传失败的站内信,告诉你缺少文件。
sync now之后,在Gradle projects待上传module的目录下 的 ‘other’ 选项下会出现一个名为install的Task,下方还会有publishing选项
按顺序点击
installbintrayUpload两个Task- 此时就可以在配置文件中配置
maven仓库地址并进行引用了,在项目的build.gradle文件中添加依赖。
repositories {
jcenter()
// Gradle 插件的仓库
maven {
//你自己的 JFrog 仓库地址
url "https://dl.bintray.com/mmrx/pngquantGradlePlugin/"
}
}
// 添加依赖,此依赖从远程仓库中查找
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
//自己编写的Gradle插件
classpath 'com.mmrx.pngcompress:pngcompress:1.0.0'
// 将项目发布到JCenter 所需要的jar
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
}
- 如果想只配置
classpath依赖,就需要将 JFrog 上的仓库发布到 JCenter 上去,点击Add to JCenter按钮,等待审核,下方出现东西后方可使用箭头所指的依赖
本文详细介绍如何将Android代码上传到JCenter的过程,包括所需准备工作、Gradle配置、任务执行等关键步骤。

735

被折叠的 条评论
为什么被折叠?



