本篇文章已受權微信公衆號 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方面的小知識,準備可能還有點不足,感興趣的能夠先點一波關注,謝謝支持~~