原始方式看這篇教你一步步發(fā)布一個開源庫到 JCenter
本文總結(jié)使用庫bintray-release發(fā)布庫到JCenter,簡單方便
一. bintary前期準(zhǔn)備
1.注冊jcenter賬號
2.創(chuàng)建Repository(倉庫)
注冊成功之后創(chuàng)建Repository埂奈,作為存放開源庫的倉庫迄损,一般選擇為公共倉庫(public),倉庫類型為maven账磺,倉庫名稱在后面上傳時需要用到芹敌。
3.獲取 API Key
Edit profile -> API Key 獲取上傳的秘鑰key,后面上傳項(xiàng)目的時候需要用到
二. 普通項(xiàng)目配置
1.準(zhǔn)備好待上傳的庫項(xiàng)目垮抗,utils即為我們待上傳庫
2.配置引入 bintray-release插件
- 項(xiàng)目根目錄build.gradle配置氏捞,加入bintray-release插件
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'//默認(rèn)gradle插件
//加入bintray-release插件
classpath 'com.novoda:bintray-release:0.9.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
- 開源庫(utils庫)目錄build.gradle配置,每個配置描述都已經(jīng)給出
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'//添加 bintray-release 配置
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
//原有配置 冒版,保持不變
}
buildTypes {
//原有配置 液茎,保持不變
}
}
dependencies {
//原有配置 ,保持不變
}
//添加
publish {
userOrg = 'beibei1024'//bintray.com用戶名
repoName = 'base' // bintray上倉庫的名字
groupId = 'com.beibei.base'//jcenter上的路徑
artifactId = 'baseutils'//項(xiàng)目名稱
publishVersion = '0.0.1'//版本號
desc = 'utils lib'// 描述
website = 'https://github.com/beibei-xiangwang/utils'//一般填github 項(xiàng)目地址,一定是要有效的地址
}
完成這兩個步驟,就可以準(zhǔn)備上傳開源庫到j(luò)center了
三. 上傳開源庫
使用上傳命令上傳開源庫捆等,再terminal中執(zhí)行
gradle clean build bintrayUpload -PbintrayUser=beibei1024 -PbintrayKey=Xxxxxxxxx -PdryRun=false
gradlew clean build bintrayUpload //根命令
-PbintrayUser=beibei1024 //jcenter 賬號用戶名
-PbintrayKey=Xxxxxxxxx //文章開頭獲取的API Key
-PdryRun=false //配置參數(shù)哼凯,true 執(zhí)行所以細(xì)節(jié)但是不上傳開源庫,false上傳開源庫
Build successful 后即可在bintary上查看到上傳的開源庫
四. Add to Jcenter提交審核開源庫
經(jīng)過上面的步驟我們還不能引用楚里,要想引用上傳的開源庫還得提交人工審核断部,人工審核通過會收到站內(nèi)message,并且開源庫中的Add to Jcenter 按鈕也會消失班缎。等待審核通過后就可以引用了compile 'com.beibei.base:baseutils:0.0.1'
五. 版本更新
開源庫迭代蝴光,只需要修改開源庫目錄build.gradle配置中的版本號,其他配置保持不變达址,再次執(zhí)行上傳開源庫命令就可以達(dá)到版本更新的目的蔑祟。
publish {
userOrg = 'beibei1024'
repoName = 'base'
groupId = 'com.beibei.base'
artifactId = 'baseutils'
publishVersion = '0.0.2'//修改版本號
desc = 'utils lib'
website = 'https://github.com/beibei-xiangwang/utils'
}
補(bǔ)充. JCenter() 與 mavenCenter() 的區(qū)別
兩種Maven倉庫
JCenter是一個由 bintray.com維護(hù)的Maven倉庫。
Maven Central 則是由sonatype.org維護(hù)的Maven倉庫沉唠。
- JCenter() 與 mavenCenter()在完全不同的服務(wù)器上維護(hù)疆虚,由不同的人提供內(nèi)容,兩者之間毫無關(guān)系满葛。在jcenter上有的可能 Maven Central 上沒有径簿,反之亦然。
- Gradle支持從JCenter與mavenCenter上獲取構(gòu)件嘀韧。事實(shí)上兩個倉庫都具有相同的使命:提供Java或者Android library服務(wù)篇亭。上傳到哪個(或者都上傳)取決于開發(fā)者。
- 如果我們使用的library的作者是把該library放在自己的服務(wù)器上锄贷,我們還可以自己定義特有的Maven倉庫服務(wù)器译蒂。
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
maven {url "https://jitpack.io"}
//引用本地倉庫
mavenLocal()
}
}
- Android Studio早期版本使用的是mavenCentral(),后來切換到j(luò)center()了谊却。
這是因?yàn)閖center在性能和占存儲大小方面比mavenCentral更優(yōu).另外還有g(shù)oogle()