发布开源库的踩坑经历:jitpack.io

589 阅读4分钟

前言

很多小伙伴自己写了一个库,打算开源出来,但是直接给别人发jar包或者aar包,别人使用都很不方便,而且版本更新也不方便,所以很多小伙伴把开源库放到了远程仓库里(如maven或jcenter),但是麻烦就麻烦在需要打包导出等。

而今天我要推荐一个超级方便的远程仓库:JitPack | Publish JVM and Android libraries

使用方法

以安卓开源库为例子(java库也类似)(这个是适用于gradle7以下的,新的gradle7集成方式,放在最后面)

  1. 先创建一个Android Library

  2. 在根项目的build.gradle文件中加入插件:

    buildscript { ... dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'//this ... } }

这个是现在的最新版本,查看最新版本请看网址:github.com/dcendents/a…

3.在要开源的module的build.gradle的最上面中加入:

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'//this
group='com.github.ltttttttttttt'//this

下面这一句是:group='com.github.你的github昵称'

4.然后将项目提交到GitHub上

5.给GitHub的你这个开源库创建一个新的版本

更新图(创建版本的位置改了):

输入一个版本号,然后可不填其他信息,点击Publish release按钮即可

7.打开网址:JitPack | Publish JVM and Android libraries

8.使用你的GitHub账号登陆一下,没有则使用GitHub注册(现在不用登陆也可以了?)

9.输入信息并查询​

输入你的GitHub昵称/你开源库的名称,然后点Look up按钮

10.注意坑

下面会列出你GitHub的版本,然后点击Get it即可

需要注意的是,如果日志图标为红色则说明有错误,需要点击日志按钮去更改错误,绿色的表示你可以使用了,我之前一直发布不出来就是因为我的浏览器我给改色了,结果看不出来颜色(无奈脸)

ps:更改错误是指,查看他给你的红色日志,然后看自身的代码哪有问题,改完之后提交代码到GitHub,然后在增加新的版本号,在来测试能不能通过

11.使用就很简单了

在根项目的build.gradle文件中加入:

allprojects {
    repositories {
...
        maven { url 'https://jitpack.io' }
    }
}

需要添加的地方加入:

implementation 'com.github.ltttttttttttt:ltviews:2.0.6'

格式是:implementation 'com.github.GitHub昵称:开源库名称:版本号'

新的集成方式

在你的model的build.gradle文件种修改如下(build.gradle.kts暂时不知道怎么改):

ps:这个新jitpack集成真是一言难尽啊,佛了...java库可以参考我的项目配置(ltttttttttttt/load-the-image: load-the-image Apply to compose-jb(desktop), Used to load network and local pictures. (github.com)),android库可以参考(GitHub - ltttttttttttt/ComposeViews: jatpack(jb) compose views, in to Android,Web,Desktop,Ios...)如果构建报错了就在日志里搜索:FAILURE

plugins{
        id("maven-publish")//this
}

group = "com.github.ltttttttttttt"//this
version = "1.0.0"//this

java {
//    withSourcesJar()//this ps:这两行加不加好像没什么区别?
//    withJavadocJar()//this
}

//然后是下面几行,刚开始按照文档做的不行(或者照着官方示例来搞),后来参考文章的弄好了:https://juejin.cn/post/7013667201722875935

//java库用这种
publishing {
    publications {
        maven(MavenPublication) {
            from components.java
            groupId = 'com.github.ltttttttttttt'
            artifactId = 'library'
            version = '1.0.0'
        }
    }
}

//android库用这种
afterEvaluate {
    publishing {
        publications {
            // 这个mavenJava可以随便填,只是一个任务名字而已
            // MavenPublication必须有,这个是调用的任务类
            release(MavenPublication) {
                from components.release
                // 这里头是artifacts的配置信息,不填会采用默认的
                groupId = 'com.github.ltttttttttttt'
                artifactId = 'library'
                version = '1.0.0'
            }
        }
    }
}

//kts语法:
publishing {
    publications {
        create("maven_public", MavenPublication::class) {
            groupId = "org.gradle.sample"
            artifactId = "library"
            version = "1.1"
            from(components.getByName("java"))
        }
    }
}

然后由于编译gradle7的程序需要指定jdk为11,所以在项目根目录创建文件jitpack.yml,输入以下内容:

jdk:
  - openjdk11

还有可能会编译服务器的内存溢出,排查了好多次,提示: Daemon will be stopped at the end of the build after running out of JVM memory,佛了,解决参考: 安卓编译 因包体太大 编译失败的解决方案 Unable do incremental execution: full task run_coolstarsky的博客-CSDN博客

结语

接下来就ok了,只能说很多事情要细心观察,不要被其他事物给蒙蔽了(比如浏览器插件)

ps记录下:看到一篇gradle7.0和java11的问题,先记录下,以后慢慢会升到的emmm

小知识 - Gradle7.0之后JitPack发布组件需要注意的几个问题 - 掘金

对Kotlin或KMP感兴趣的同学可以进Q群 101786950

如果这篇文章对您有帮助的话

可以扫码请我喝瓶饮料或咖啡(如果对什么比较感兴趣可以在备注里写出来)