最近折腾Bintray相关的事情,被一个小问题所折磨,颇有些精疲力竭的感觉。不禁感慨:
——发布个小小的jar竟有这么难?
JitPack简介
JitPack
Easy to use package repository for Git
Publish your JVM and Android libraries
本质上,JitPack相当于一个Maven仓库。
对普通JVM应用,只要能够编译成功,都是可以自动生成的,不需要额外配置。
对Android的aar来说,需要确保./gradlew install
能够把它安装到本地Maven仓库,默认路径为~/.m2/repositories/
。

发布
发布版本到JitPack,其流程之简洁,是令人震惊的!

JitPack是基于GitHub Releases的发布。当你打完tag,自动生成一个Release时,源文件会自动打包成zip。在JitPack上点击【Get it】,就可以编译这个tag的源文件,把版本发布到这个私有Maven库中,并且可以提供给其他人使用。
比起Bintray的JCenter,或者Maven Central这个官方中央仓库来说,JitPack背靠GitHub,少了一大堆流程。
另外,JitPack也可以基于不是tag的提交来发布,点击上图左下角的【Commits】即可,用法类似。
使用
既然是发布给别人使用,那么别人如何使用呢?

maven { url "https://jitpack.io" }
就是指定私有Maven库为JitPack,compile 'com.github.User:Repo:Tag'
则是指定具体的包。
缺陷就是,groupId无端地变成了com.github.User
,会令人误认为是GitHub公司发布的。
其它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来访问该项目的javadoc。
https://jitpack.io/com/github/User/Repo/Version/javadoc/
不仅快速发布jar,连doc也有了。
Badge
JitPack也是有勋章的,大概是这个样子:
在JitPack页面的下面可以看到对应勋章,点击后可出现生成好的Markdown链接。复制到项目的README.md
即可。
勋章链接的大概规则如下:
[](https://jitpack.io/#User/Repo)
参考
简洁的官方文档:https://jitpack.io/docs/
《优雅的发布Android开源库(论JitPack的优越性)》
后记
匿:既生JitPack,何生Bintray?
蟒:折腾完Bintray后,再发现JitPack,我的内心是崩溃的。等我回过神来,竟然10分钟就搞明白怎么用,而且本地编译时就已经用上了。与此同时,JCenter那边的审核都还没过。
匿:╮(╯╰)╭
蟒:ಥಥ
网友评论
https://jitpack.io/docs/BUILDING/#multi-module-projects
另外,一个Git库没必要出多个产物吧?可以考虑拆分一下。
JCenter那边,自动化程度低,可订制程度高,是支持的。