注册与上传 JCcenter
写得比较清楚的文章,我直接引用过来了,感谢开源,我就不重复造轮子了。直接贴链接,感谢原作者。
特别说明,我使用的是第一种方式完成了注册和相关设置选项。根据文中的方式操作,一步一步来,问题不大。可能需要特别注意的是配置文件的编写。这里我贴一份配置文件 build.gradle 的编写方式。可供参考。
配置文档备份
在线上传配置备份
//从这里开始配置
//添加这两行
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
//项目主页--项目的GitHub地址
def siteUrl = 'https://github.com/hgncxzy/keyboard'
//项目的git地址
def gitUrl = 'https://github.com/hgncxzy/keyboard.git'
//发布到JCenter上的项目名字,compile引用时的第2部分项目名
def libName = "keyboard"
//compile引用时的第1部分
group = "com.xzy.util"
// 版本号,//compile引用时的最后部分项目名,下次更新是只需要更改版本号即可
version = "1.0.0"
//上面配置后上传至JCenter后的编译路径是这样的: compile 'com.xzy.util:keyboard:1.0.0'
//生成源文件
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
//生成Javadoc文档
//task javadoc(type: Javadoc) {
// source = android.sourceSets.main.java.srcDirs
// classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
//}
//文档打包成jar
//task javadocJar(type: Jar, dependsOn: javadoc) {
// classifier = 'javadoc'
// from javadoc.destinationDir
//}
//拷贝javadoc文件
//task copyDoc(type: Copy) {
// from "${buildDir}/docs/"
// into "docs"
//}
//上传到JCenter所需要的源码文件
artifacts {
// archives javadocJar
archives sourcesJar
}
// 配置maven库,生成POM.xml文件
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
//项目描述,自由填写
name 'Keyboard on Android'
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 'hgncxzy'
name 'arthinking'
email 'hgncxzy@gmail.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
//上传到JCenter
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user") //读取 local.properties 文件里面的 bintray.user
key = properties.getProperty("bintray.apikey") //读取 local.properties 文件里面的 bintray.apikey
configurations = ['archives']
pkg {
//这里的repo值必须要和你创建Maven仓库的时候的名字一样,我们前面创建的就是maven
repo = "maven"
//发布到JCenter上的项目名字
name = libName
//项目描述
desc = 'Keyboard on Android'
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}
//javadoc {
// options {
// //如果你的项目里面有中文注释的话,必须将格式设置为UTF-8,不然会出现乱码
// encoding "UTF-8"
// charSet 'UTF-8'
// author true
// version true
// links "http://docs.oracle.com/javase/7/docs/api"
// }
//}
可以将整个配置复制到需要上传的 module 的 build.gradle 文件中,在对应的地方做修改就可以。然后分别执行如下命令:
gradlew install
gradlew bintrayUpload
本地打包 arr ,生成 pom 文档再上传方式(推荐)
我在执行 gradlew bintrayUpload 的时候,卡在 99%,很多次都是失败,报的是连接超时错误。最后,去 JCcenter 查看,只有源码的 jar 包上传上来了,缺少 aar 和 pom 文件。试了很多次,都是失败的。于是使用本地打包再上传的方式执行。
/从这里开始配置
// 配置完成后,执行 gradlew generateRelease 在本地生成所需的文件,build/release 文件夹中
// 将 com 文件夹以下打包成 zip 包,然后在 jcenter 创建新的版本,并上传该 zip 到新创建的版本
//应用插件 maven
apply plugin: 'maven'
//声明你的包名
def groupId = 'com.xzy.util'
//声明模块名称
def artifactId = 'keyboard'
//要发布的版本号
def version = '1.0.2'
def localReleaseDest = "${buildDir}/release/${version}"
task androidJavadocs(type: Javadoc) {
failOnError = false
source = android.sourceSets.main.java.srcDirs
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath += files(ext.androidJar)
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
//Maven本地仓库构建
uploadArchives {
repositories.mavenDeployer {
pom.groupId = groupId
pom.artifactId = artifactId
pom.version = version
// Add other pom properties here if you want (developer details / licenses)
repository(url: "file://${localReleaseDest}")
}
}
//压缩为zip
task zipRelease(type: Zip) {
from localReleaseDest
destinationDir buildDir
archiveName "release-${version}.zip"
}
//输出到本地补录,位于你的模块中的build下
task generateRelease {
doLast {
println "Release ${version} can be found at ${localReleaseDest}/"
//注意此处,Windows系统需要加入\\转义符,Mac请去掉转义符"\\"
println "Release ${version} zipped can be found ${buildDir}\\release-${version}.zip"
}
}
generateRelease.dependsOn(uploadArchives)
generateRelease.dependsOn(zipRelease)
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
具体步骤为:
- 将以上模板复制到需要上传的 module 的 build.gradle 中
- 修改对应的地方
- 配置完成后,执行 gradlew generateRelease
- 在本地生成所需的文件,并在 build/release 文件夹中可以得到这些文件,将 com 文件夹以下打包成 zip 包
- 然后在 jcenter 创建新的版本,并上传该 com.zip 到新创建的版本,会自动解压
- 等待加入 jcenter,加入后就可以引用了。
问题解决参考文档
注意
- 如果项目是私有的,可能添加不成功
- 建议采用本地打包再上传的方式,效率比较高。(实测体验)
其他问题,请联系我 hgncxzy@qq.com