註冊與上傳 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 '[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
}
具體步驟爲:
- 將以上模板複製到需要上傳的 module 的 build.gradle 中
- 修改對應的地方
- 配置完成後,執行 gradlew generateRelease
- 在本地生成所需的文件,並在 build/release 文件夾中可以得到這些文件,將 com 文件夾以下打包成 zip 包
- 然後在 jcenter 創建新的版本,並上傳該 com.zip 到新創建的版本,會自動解壓
- 等待加入 jcenter,加入後就可以引用了。
問題解決參考文檔
注意
- 如果項目是私有的,可能添加不成功
- 建議採用本地打包再上傳的方式,效率比較高。(實測體驗)
其他問題,請聯繫我 [email protected]