一步一步教你将开源项目上传到jcenter

注册与上传 JCcenter

写得比较清楚的文章,我直接引用过来了,感谢开源,我就不重复造轮子了。直接贴链接,感谢原作者。

  1. 一步一步教你将开源项目上传到jcenter(第一种方式)
  2. 一步一步教你将开源项目上传到jcenter(第二种方式)

特别说明,我使用的是第一种方式完成了注册和相关设置选项。根据文中的方式操作,一步一步来,问题不大。可能需要特别注意的是配置文件的编写。这里我贴一份配置文件 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 '[email protected]'
                    }
                }
                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
}

具体步骤为:

  1. 将以上模板复制到需要上传的 module 的 build.gradle 中
  2. 修改对应的地方
  3. 配置完成后,执行 gradlew generateRelease
  4. 在本地生成所需的文件,并在 build/release 文件夹中可以得到这些文件,将 com 文件夹以下打包成 zip 包
  5. 然后在 jcenter 创建新的版本,并上传该 com.zip 到新创建的版本,会自动解压
  6. 等待加入 jcenter,加入后就可以引用了。

问题解决参考文档

  1. AndroidStudio发布项目到Bintray遇到的错误及解决

注意

  1. 如果项目是私有的,可能添加不成功
  2. 建议采用本地打包再上传的方式,效率比较高。(实测体验)

其他问题,请联系我 [email protected]

发布了342 篇原创文章 · 获赞 174 · 访问量 98万+

猜你喜欢

转载自blog.csdn.net/jdfkldjlkjdl/article/details/104796228