上传Android库到JCenter
上传Android库到JCenter
申请账号
到Bintray这网站上申请一个账号,并获取到账号和秘钥。
Bintray网站负责托管我们上传的jar包或aar包及版本信息。
Bintray是JCenter源码库的托管网站,除了可以通过Bintray将依赖库文件发布到JCenter,还可以创建自己的Maven仓库。由于Maven对开发者不太友好,上传依赖库异常困难,所以Android Studio将默认的源码库从maven换到了JCenter。
添加依赖
我们需要添加两个依赖
- 构建需要上传依赖库的相关文件的依赖
- 将依赖库上传到Bintray网站的依赖
在项目根build.gradle文件中添加如下代码:
buildscript {
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
}
}
编写配置构建文件
再需要上传的module下的build.gradle文件中,添加构建配置。为了保持build.gradle文件的整洁,可以将构建配置单独放到gradle文件中,然后在build.gradle引入即可。
在项目根目录下添加配置文件bintrayupload.gradle,文件内容如下:
// 构建Maven依赖库脚本
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
//定义上传到Bintray网站需要的属性,这三个参数定义在gradle.properties文件中
group = groupId
artifactId = artifactId
version = versionCode
def siteUrl = 'http://xxx'
def gitUrl = 'http://xxx'
//定义一个从local.properties文件读取参数的方法
def getPropertyFromLocalProperties(key) {
File file = project.rootProject.file("local.properties")
if (file.exists()) {
Properties properties = new Properties()
properties.load(file.newDataInputStream())
return properties.getProperty(key)
}
}
// 构建pom文件
install {
repositories.mavenInstaller {
pom {
project {
packaging 'aar'
name 'One high-Performance log library for android'
groupId groupId
artifactId artifactId
version versionCode
url siteUrl
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id 'xxx'
name 'xxx'
email '[email protected]'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
//设置上传配置和参数
bintray {
user = getPropertyFromLocalProperties("bintray.user")
key = getPropertyFromLocalProperties("bintray.key")
configurations = ['archives']
pkg {
repo = 'Maven'//这里要与Bintray网站的仓库名称一致
name = "${project.group}:${project.name}"
userOrg = 'xxx'
licenses = ['Apache-2.0']
websiteUrl = siteUrl
vcsUrl = gitUrl
publish = true
}
}
//构建源码任务
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))
//注意添加编码方式,否则默认gbk编码在显示中文时乱码
options.encoding = "utf-8"
options.charSet = "utf-8"
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
在需要上传的module下的build.gradle文件中添加对bintrayupload.gradle文件的依赖。
//这句话一定要添加到文件末尾
apply from: rootProject.file("bintrayupload.gradle")
上传到maven
执行install任务
在gradle任务列表中找到other->install任务并执行,会依照bintrayupload.gradle文件的配置脚本构建所需文件。
执行bintrayUpload任务
在gradle任务列表中找到publishing->bintrayUpload任务并执行,会将上一步构建的文件上传到Bintray网站。
上传成功后,会自动创建相应包名的工程。
上传到JCenter
在新建项目的右下角,点击“Add to JCenter”按钮,会将该项目文件发布到JCenter,等到审核通过后就可以使用了。