前言
很多小伙伴自己写了一个库,打算开源出来,但是直接给别人发jar包或者aar包,别人使用都很不方便,而且版本更新也不方便,所以很多小伙伴把开源库放到了远程仓库里(如maven或jcenter),但是麻烦就麻烦在需要打包导出等。
而今天我要推荐一个超级方便的远程仓库:JitPack | Publish JVM and Android libraries
使用方法
以安卓开源库为例子(java库也类似)(这个是适用于gradle7以下的,新的gradle7集成方式,放在最后面)
- 先创建一个Android Library
- 在根项目的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
如果这篇文章对您有帮助的话
可以扫码请我喝瓶饮料或咖啡(如果对什么比较感兴趣可以在备注里写出来)