从GitHub到JitPack

作者: 匿蟒 | 来源:发表于2016-10-15 14:21 被阅读2605次

    最近折腾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/

    发布aar的官方英文文档,简洁明了,几乎没有语言障碍。

    发布

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

    1. 用GitHub账户注册、登录JitPack
    2. 打tag,push到GitHub,生成一个Release。
    3. JitPack点击【Get it】
    三个tag,绿色就代表可用,白色的不可用。白色是因为,按钮还没被点击过,对应的jar或aar还没编译安装到这里的Maven库中。

    JitPack是基于GitHub Releases的发布。当你打完tag,自动生成一个Release时,源文件会自动打包成zip。在JitPack上点击【Get it】,就可以编译这个tag的源文件,把版本发布到这个私有Maven库中,并且可以提供给其他人使用。

    比起Bintray的JCenter,或者Maven Central这个官方中央仓库来说,JitPack背靠GitHub,少了一大堆流程。

    另外,JitPack也可以基于不是tag的提交来发布,点击上图左下角的【Commits】即可,用法类似。

    使用

    既然是发布给别人使用,那么别人如何使用呢?

    点击【Get it】即可跳转到对应的使用方法

    maven { url "https://jitpack.io" }就是指定私有Maven库为JitPackcompile '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/v/User/Repo.svg)](https://jitpack.io/#User/Repo)

    参考

    简洁的官方文档:https://jitpack.io/docs/

    优雅的发布Android开源库(论JitPack的优越性)

    后记

    匿:既生JitPack,何生Bintray?
    蟒:折腾完Bintray后,再发现JitPack,我的内心是崩溃的。等我回过神来,竟然10分钟就搞明白怎么用,而且本地编译时就已经用上了。与此同时,JCenter那边的审核都还没过。
    匿:╮(╯╰)╭
    蟒:ಥ

    相关文章

      网友评论

      • 蜡笔小州:请问作者,配置的那个gradle是在arr的情况下使用对嘛?发布普通的library是不是不用配置也好。
        匿蟒:@蜡笔小州 距离文章发布一年多了,Gradle也已经到了4.x。文中提到的一些细节已经过时,需要按照当前的版本来调整。
      • 174232d9bdc9:问下啊,jitpack 支持多 module 吗
        174232d9bdc9:@匿蟒 多谢解答。在官网发现了文档介绍。是支持的
        https://jitpack.io/docs/BUILDING/#multi-module-projects
        匿蟒:@Panda_a00a 没试过。但只要artifact ID不同,不引起URL冲突,理论上可行,只是不知道做产品的是否愿意去实现。

        另外,一个Git库没必要出多个产物吧?可以考虑拆分一下。

        JCenter那边,自动化程度低,可订制程度高,是支持的。

      本文标题:从GitHub到JitPack

      本文链接:https://www.haomeiwen.com/subject/dpidyttx.html