最近折騰Bintray相關(guān)的事情,被一個小問題所折磨,頗有些精疲力竭的感覺。不禁感慨:
——發(fā)布個小小的jar竟有這么難?
JitPack簡介
JitPack
Easy to use package repository for Git
Publish your JVM and Android libraries
本質(zhì)上,JitPack相當(dāng)于一個Maven倉庫。
對普通JVM應(yīng)用,只要能夠編譯成功,都是可以自動生成的,不需要額外配置。
對Android的aar來說,需要確保./gradlew install能夠把它安裝到本地Maven倉庫,默認(rèn)路徑為~/.m2/repositories/。

發(fā)布
發(fā)布版本到JitPack,其流程之簡潔,是令人震驚的!

JitPack是基于GitHub Releases的發(fā)布。當(dāng)你打完tag,自動生成一個Release時,源文件會自動打包成zip。在JitPack上點(diǎn)擊【Get it】,就可以編譯這個tag的源文件,把版本發(fā)布到這個私有Maven庫中,并且可以提供給其他人使用。
比起B(yǎng)intray的JCenter,或者M(jìn)aven Central這個官方中央倉庫來說,JitPack背靠GitHub,少了一大堆流程。
另外,JitPack也可以基于不是tag的提交來發(fā)布,點(diǎn)擊上圖左下角的【Commits】即可,用法類似。
使用
既然是發(fā)布給別人使用,那么別人如何使用呢?

maven { url "https://jitpack.io" }就是指定私有Maven庫為JitPack,compile 'com.github.User:Repo:Tag'則是指定具體的包。
缺陷就是,groupId無端地變成了com.github.User,會令人誤認(rèn)為是GitHub公司發(fā)布的。
其它Git源
JitPack也支持其它Git源,目前只有BitBucket和GitLab。
JitPack also works with other Git hosting providers. The only difference is the groupId of your artifacts:
- BitBucket: org.bitbucket.Username:Repo:Tag
- GitLab: com.gitlab.Username:Repo:Tag
用法與GitHub類似。
展示javadoc
如果打包有*-javadoc.jar到GitHub Releases里,可以通過一下URL來訪問該項(xiàng)目的javadoc。
https://jitpack.io/com/github/User/Repo/Version/javadoc/
不僅快速發(fā)布jar,連doc也有了。
Badge
JitPack也是有勛章的,大概是這個樣子:
在JitPack頁面的下面可以看到對應(yīng)勛章,點(diǎn)擊后可出現(xiàn)生成好的Markdown鏈接。復(fù)制到項(xiàng)目的README.md即可。
勛章鏈接的大概規(guī)則如下:
[](https://jitpack.io/#User/Repo)
參考
簡潔的官方文檔:https://jitpack.io/docs/
《優(yōu)雅的發(fā)布Android開源庫(論JitPack的優(yōu)越性)》
后記
匿:既生JitPack,何生Bintray?
蟒:折騰完Bintray后,再發(fā)現(xiàn)JitPack,我的內(nèi)心是崩潰的。等我回過神來,竟然10分鐘就搞明白怎么用,而且本地編譯時就已經(jīng)用上了。與此同時,JCenter那邊的審核都還沒過。
匿:╮(╯╰)╭
蟒:??