本篇文章已受权微信公众号 dasu_Android(大苏)独家发布java
这周末本身瞎折磨了下,如何发布开源库到 JCenter,而后这过程当中碰到了一些问题,在此记录分享一下android
本篇是基于上一篇:教你一步步发布一个开源库到 JCenter 介绍的流程、步骤中所遇到的问题,因此没看过上一篇的,能够去看看哈~git
缘由:android-maven-gradle-plugin 插件的 buggithub
解决:更换版本,本次测试出问题版本 1.3,更改成 1.4.1 后正常web
作法:在根目录的 build.gradle 文件中修改插件版本:api
dependencies { classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' }
缘由:apply from 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle' 代码放错位置微信
解决:因为上述 apply from 代码的意思是使用存储在网上的脚本模板文件,模板文件中使用了不少还未声明的变量,因此 apply from 这行代码应该放置在 ext {} 变量声明代码块以后网络
作法: build.gradle 文件中如下几行代码应该按顺序来,第一行 apply from: 'bintray-config.gradle' 其实就是脚本模板文件中的变量声明,赋值代码,也就是 ext{} 代码块,只是将其单独放置于一个 gradle 文件中,这里也能够直接将 ext{} 代码替换掉 apply from: 'bintray-config.gradle'app
apply from: 'bintray-config.gradle' //ext{} 变量声明,赋值代码块必须在如下两个脚本模板文件以前 apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle' apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
缘由:apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle' 代码放错位置maven
解决:跟 2 的理由相似,这个脚本是用于将本地生成的 pom,aar 等文件上传至 bintray 仓库,但这个脚本的运行须要依赖于一些 android {} 块的属性配置;因此并非全部 apply from 的代码都是放置于 build.gradle 的开头,这里建议将 第 2 中的三个 apply from 代码都放置于 build.gradle 文件末尾。
以上 1-3 问题均是在上一篇中的步骤,第 2 步:配置本地 gradle 脚本插件,的过程当中操做不当致使的
缘由:执行 gradlew install
构建过程当中出错,这是因为执行生成 javadoc 过程当中出问题,至于为何出问题能够具体查看日志,例如我这里:
我这里是因为在代码中有中文,因此致使的构建错误
解决:有没有其余解决方案我不清楚,我又不想将这些中文注释给删除掉,那么我只能将这个 javadoc 的 task 给关掉了,反正我上传到 JCenter 上的开源库也只是我本身在用,不须要 javadoc 文档
作法:因为 javadoc 的 task 是在 bintray 提供的脚本模板文件中,因此只能修改这个模板文件,那么在上一篇的第 2 步:配置本地 gradle 脚本插件,就不能用 apply from 'http://...'
的形式了,由于这种形式没法修改模板文件。
那么就须要在本地新建一个 installv1.gradle 文件,而后将这个脚本文件里的代码拷贝进这个新建的文件中:
//将下面全部的 javadoc task 注释掉,不用这个功能 apply plugin: 'com.jfrog.bintray' version = libraryVersion if (project.hasProperty("android")) { // Android libraries task sourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.srcDirs } //1. 这里是第1处 // task javadoc(type: Javadoc) { // source = android.sourceSets.main.java.srcDirs // classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) // } } else { // Java libraries task sourcesJar(type: Jar, dependsOn: classes) { classifier = 'sources' from sourceSets.main.allSource } } //2. 这里是第2处 //task javadocJar(type: Jar, dependsOn: javadoc) { // classifier = 'javadoc' // from javadoc.destinationDir //} artifacts { //3. 这里是第3处 // archives javadocJar archives sourcesJar } // Bintray Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") println user println key configurations = ['archives'] pkg { repo = bintrayRepo name = bintrayName desc = libraryDescription websiteUrl = siteUrl vcsUrl = gitUrl licenses = allLicenses publish = true publicDownloadNumbers = true version { desc = libraryDescription gpg { sign = true //Determines whether to GPG sign the files. The default is false passphrase = properties.getProperty("bintray.gpg.password") //Optional. The passphrase for GPG signing' } } } }
而后在 module 下的 build.gradle 文件的末尾中,将本来的 apply from 代码换成下面的:
apply from: 'bintray-config.gradle' apply from: 'bintrayv1.gradle' apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'
上面两个 apply from 是指使用 本地脚本文件,最后一个 apply from 是指使用网络上的脚本文件,本地脚本文件能够任本身修改
最近(2018-03)刚开通了公众号,想激励本身坚持写做下去,初期主要分享原创的Android或Android-Tv方面的小知识,准备可能还有点不足,感兴趣的能够先点一波关注,谢谢支持~~