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

article/2025/9/20 22:57:37

前言

很多小伙伴自己写了一个库,打算开源出来,但是直接给别人发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"//thisjava {withSourcesJar()//thiswithJavadocJar()//this
}//然后是下面几行,刚开始按照文档做的不行(或者照着官方示例来搞),后来参考文章的弄好了:https://juejin.cn/post/7013667201722875935//java库用这种
publishing {publications {maven(MavenPublication) {from components.javagroupId = '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发布组件需要注意的几个问题 - 掘金


http://chatgpt.dhexx.cn/article/n3Q6WeC0.shtml

相关文章

maven { url ‘https://www.jitpack.io‘ }在新版Android Studio中的位置

Android Studio升级到Arctic Fox后,一些配置项的位置都做了改变。 github上的很多库通过JitPack.io发布的,引用这些库时,除了在模块的build.gradle文件中加入依赖,还要在项目的build.gradle文件中加入maven { url ‘https://www.j…

真香警告~JitPack 开源库集成平台

文章目录 前言简介使用场景:一、准备工作1.1 生成私人令牌1.2 在JitPack中配置 Gitee 访问权限 二、准备Gitee 码云项目2.1 将本地的开发项目上传到 Gitee仓库2.2 为源码仓库创建 发行(Release)版本 三、开源库集成JitPack3.1 进入 JitPack,使…

基于新版本Gradle上传jitpack开源项目

因为新版本的gradle编译开源库的方法已经变了,所以这边记录下 1.第一步创建一个空项目 2.因为这样会创建出来一个app项目,我们上传git是不需要这个的,所以我们在 项目中setting.gradle目录下注释掉 app模块,然后就可以手动删除…

Android 上传代码到gitee并发布到Jitpack生成远程库

# 一创建项目 查看toollibrary主要配置 这里附上关键代码 plugins {id com.android.libraryid org.jetbrains.kotlin.androidid maven-publish } task generateSourcesJar(type: Jar) {from android.sourceSets.main.java.srcDirsclassifier sources } afterEvaluate {publish…

jitpack 介绍

2019独角兽企业重金招聘Python工程师标准>>> jitpack 一个有意思的工具, 可以从github、码云根据commitId、tag 生成maven依赖,减少代码下载、打包等步骤。工具地址 https://jitpack.io/ 转载于:https://my.oschina.net/u/2000646/blog/2966…

你会在 JitPack 上创建依赖库吗?

为什么写 看见标题有人可能会轻蔑一笑,多简单个事?还至于专门写一篇文章吗? 我之前也以为挺简单的,因为之前自己也上传过,但是前几天的经历告诉我没有那么简单,特别是现在安卓 Gradle 升级到 7.0 之后。。…

Jitpack使用指南:maven-publish如虎,jitpack如翼 【安卓Java组件化模块化】【更多gradle技巧】

上文总结了三种多模块开发的方法。 第一种:在setting.gradle中定义子模块然后 api Project(:...),直接引用 。第二种,使用 maven-publish 部署至本地仓库第三种,使用 jitpack.io 等部署至远程服务器 我的第一个开源项目就依次用…

使用jitpack发布你自己的依赖库

如何优雅的让其他开发者使用我们的库。 我们经常通过gradle导入第三方库,那么我们自己的库如何提供给其他开发者使用?下边我们分别介绍使用jitpack、mavenCentral(以前叫JCenter)来发布我们的库。 在使用前,我们先了解…

JitPack的使用

JitPack的使用 1 JitPack简介2 JitPack使用1 上传代码到仓库,并创建一个release2 进入JitPack官网首页,输入仓库地址,点击Look up3 点击Get it按钮,下面生成maven仓库和依赖4 在项目的pom文件中添加上面两个依赖 3 总结 JitPack官网 官网文档 参考资料: https://blog.csdn.n…

一文详解jitpack多渠道maven库发布

先说一下,为什么会有这篇文章? 最初接触 JitPack 时,发现网络上大量涉及JitPack的教程不可用。通过两天的研究才搞明白: 1.不同的gradle版本,gradle api使用方式 与 JitPack配置方式均有所差异:使用JitPack…

【红黑树】二叉树的改进---红黑树|平衡二叉树和红黑树的区别

目录 二叉树的改进---红黑树 红黑树和AVL树(平衡二叉树)区别 确实是AVL(平衡二叉树)更严格(左右子树树高不超过1), 红黑树只保证最长路径不超过最短路径的2倍 二叉树的改进---红黑树 这个是一个 小灰程序…

红黑树是怎么实现的,看这篇真的就够了!

大家好,我是鸭血粉丝,又是一个元气满满的周一,今天带大家一文搞懂红黑树,友情提示:本文较长,建议先收藏再观看。 红黑树由来:在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树&…

红黑树解读与Java实现

红黑树解读与Java实现 概要 目录 红黑树的介绍红黑树的应用红黑树的时间复杂度和相关证明红黑树的基本操作,左右旋红黑树的基本操作,添加与调整红黑树的基本操作,删除与调整 一、红黑树的介绍 什么是红黑树? R-B Tree&#…

JDK14的新特性:JFR,JMC和JFR事件流

文章目录 简介JFRJMC创建JFR分析JFR JFR事件JFR事件流总结 简介 Java Flight Recorder(JFR)是JVM的诊断和性能分析工具。它可以收集有关JVM以及在其上运行的Java应用程序的数据。JFR是集成到JVM中的,所以JFR对JVM的性能影响非常小&#xff0…

Cocos2d-x利用jni调用java层代码

jni的意思是java本地调用,通过jni可以实现java层代码和其他语言写得代码进行交互。在cocos2d-x中,如果想要在c层调用java层的代码,就是通过jni技术。通过调用java层的代码,我们就可以在Android平台下实现一些引擎没有提供给我们的…

红黑树,学习红黑树,jdk1.8之后的新知识

红黑二叉树 1.引言 HashMap的基本结构是数组,链表和红黑树。以数组为基本形态,数组中的元素先以链表形式储存,当链表的长度超过8时(包含数组上的那个链表头)就会将链表转换为红黑树,以加快修改和查询效率…

JavaScript 红黑树

一、树的平衡性 为了能以较快的时间O(logN)来操作一棵树,我们需要保证树总是平衡的: 至少大部分是平衡的,那么时间复杂度也是接近O(logN)的也就是说树中每个节点左边的子孙节点的个数应该尽可能的等于右边的子孙节点的个数.常见的平衡树有哪些呢?AVL树: AVL树是最早的一种平衡…

最详细的对红黑树性质理解

红黑树的性质: 在了解红黑树之前,建议先去了解一下什么是二叉搜索树。 因为红黑树属于二叉搜索树特殊的分支,所以建议先去了解一下二叉搜索树。 二叉搜索树:https://blog.csdn.net/Falling_stars_/article/details/115536511 红…

JDK1.8之后,HashMap转变红黑树

当链表长度大于8并且数组长度大于64时,才会转换为红黑树 根据源码注释: 1.TreeNodes占用空间是普通Nodes的两倍。 只有当bin(bin就是bucket-桶,即HashMap中hashCode值一样的元素保存的地方)包含足够多的节点时才会转成…

jdk1.8的HashMap中的红黑树插入,为什么是红黑树而不是AVL树

jdk1.8HashMap的源码 树节点 static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> {TreeNode<K,V> parent; // red-black tree linksTreeNode<K,V> left;TreeNode<K,V> right;TreeNode<K,V> prev; // needed to unli…