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

前言

很多小伙伴自己写了一个库,打算开源出来,但是直接给别人发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
...
    }
}

这个是现在的最新版本,查看最新版本请看网址:https://github.com/dcendents/android-maven-gradle-plugin

    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文件种修改如下:

ps:这个新jitpack集成真是一言难尽啊,佛了...java库可以参考我的项目配置(ltttttttttttt/load-the-image(github.com)),android库可以参考该项目tag=1.2.7时(GitHub - ltttttttttttt/ComposeViews),kmp项目可以参考(ltttttttttttt/ComposeViews(github.com)

)(但其实还是用了点骚套路,未来kmp支持非jvm平台的可能还需要另找方案) 

如果构建报错了就在日志里搜索:FAILURE

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

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

java {
    withSourcesJar()//this
    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 = "com.github.ltttttttttttt"
            artifactId = "library"
            version = "1.0.0"
            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

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

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

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值