原始方式看這篇教你一步步發(fā)布一個開源庫到 JCenter
本文總結使用庫bintray-release發(fā)布庫到JCenter,簡單方便
一. bintary前期準備
1.注冊jcenter賬號

2.創(chuàng)建Repository(倉庫)
注冊成功之后創(chuàng)建Repository,作為存放開源庫的倉庫,一般選擇為公共倉庫(public),倉庫類型為maven,倉庫名稱在后面上傳時需要用到。

3.獲取 API Key
Edit profile -> API Key 獲取上傳的秘鑰key,后面上傳項目的時候需要用到

API Key.png
二. 普通項目配置
1.準備好待上傳的庫項目,utils即為我們待上傳庫

模擬待上傳的工具庫.png
2.配置引入 bintray-release插件
- 項目根目錄build.gradle配置,加入bintray-release插件
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'//默認gradle插件
//加入bintray-release插件
classpath 'com.novoda:bintray-release:0.9.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
- 開源庫(utils庫)目錄build.gradle配置,每個配置描述都已經給出
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'//項目名稱
publishVersion = '0.0.1'//版本號
desc = 'utils lib'// 描述
website = 'https://github.com/beibei-xiangwang/utils'//一般填github 項目地址,一定是要有效的地址
}
完成這兩個步驟,就可以準備上傳開源庫到jcenter了
三. 上傳開源庫
使用上傳命令上傳開源庫,再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í)行所以細節(jié)但是不上傳開源庫,false上傳開源庫
Build successful 后即可在bintary上查看到上傳的開源庫

四. Add to Jcenter提交審核開源庫
經過上面的步驟我們還不能引用,要想引用上傳的開源庫還得提交人工審核,人工審核通過會收到站內message,并且開源庫中的Add to Jcenter 按鈕也會消失。等待審核通過后就可以引用了compile 'com.beibei.base:baseutils:0.0.1'

五. 版本更新
開源庫迭代,只需要修改開源庫目錄build.gradle配置中的版本號,其他配置保持不變,再次執(zhí)行上傳開源庫命令就可以達到版本更新的目的。
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'
}
補充. JCenter() 與 mavenCenter() 的區(qū)別
兩種Maven倉庫
JCenter是一個由 bintray.com維護的Maven倉庫。
Maven Central 則是由sonatype.org維護的Maven倉庫。
- JCenter() 與 mavenCenter()在完全不同的服務器上維護,由不同的人提供內容,兩者之間毫無關系。在jcenter上有的可能 Maven Central 上沒有,反之亦然。
- Gradle支持從JCenter與mavenCenter上獲取構件。事實上兩個倉庫都具有相同的使命:提供Java或者Android library服務。上傳到哪個(或者都上傳)取決于開發(fā)者。
- 如果我們使用的library的作者是把該library放在自己的服務器上,我們還可以自己定義特有的Maven倉庫服務器。
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
maven {url "https://jitpack.io"}
//引用本地倉庫
mavenLocal()
}
}
- Android Studio早期版本使用的是mavenCentral(),后來切換到jcenter()了。
這是因為jcenter在性能和占存儲大小方面比mavenCentral更優(yōu).另外還有google()