上传jar到github仓库,作为maven依赖存储库

记录上传maven依赖包到github仓库问题

利用GitHubPackages作为依赖的存储库

背景:

最近在学习腾讯的Shadow插件框架,fork并clone开源框架到自己的仓库,做了自定义定制化修改后,准备将sdk打成jar上传到github上方便其他项目直接依赖使用。

但是之前没有在github上搭建maven仓库的经验,于是踩坑无数。

踩坑1 仓库地址问题

一开始直接新建了一个普通仓库,然后配置仓库地址,https://github.com/dhs964057117/maven-repository使用gradle Maven插件上传,直接报错Forbidden 403。

Could not PUT 'https://github.com/dhs964057117/Shadow/com/tencent/shadow/core/transform/1.0.0/transform-1.0.0.jar'. Received status code 403 from server: Forbidden

然后看网上各种说因为要支持上传下载不能用https://github.com/(用户名)/(仓库)(比如我这里是https://github.com/dhs964057117/maven-repository)。

得用https://raw.github.com/dhs964057117/maven-repository,继续报错503。

Could not PUT 'https://raw.github.com/dhs964057117/Shadow/com/tencent/shadow/core/transform/1.0.0/transform-1.0.0.jar'. Received status code 503 from server: client read error

然后百度又说github迁移了不是这个地址,改为:https://raw.githubusercontent.com/dhs964057117/maven-repository/main。

结果还是不行报错:

最后看到说要利用GithubPackages来作为存储库,也就是平时看到仓库里这里的packages:

地址要改为https://maven.pkg.github.com/dhs964057117/maven-repository/

但是仍然报错

Execution failed for task ':publishTransformPublicationToGitHubPackagesRepository'.

Failed to publish publication 'transform' to repository 'GitHubPackages'

Could not PUT 'https://maven.pkg.github.com/dhs964057117/Shadow/com/tencent/shadow/core/transform/1.0.0/transform-1.0.0.jar'. Received status code 422 from server: Unprocessable Entity

最后没办法,我直接发布到本地,然后在git push上去,结果代码是有了,但是死活拉不下来,最后放弃。

踩坑2 Personal access tokens

没有配置Personal access tokens (classic),导致没有权限,也会报错403

正确姿势

一、创建一个普通仓库,比如我这里是fork的腾讯Shadow到本地。地址是:https://github.com/dhs964057117/Shadow

二、生成一个Personal access tokens

1.点击头像------点击settings
2. 找到左侧Developer settings
3. 展开点击Tokens(classic)

然后生成一个密钥填进去就行,生成token的时候会提醒你保存一个密码,记得保存到本地,后面会用到。

4. 上传依赖packages

比如我这个shadow框架里人家写的maven配置是:

groovy 复制代码
            maven {
                name = "GitHubPackages"
                credentials {
                    username = System.getenv("GITHUB_ACTOR")
                    password = System.getenv("GITHUB_TOKEN")
                }
                url "https://maven.pkg.github.com/" + "${System.env.GITHUB_REPOSITORY}".toLowerCase()
            }

这里name可以不改

groovy 复制代码
                credentials {
                    username = username(改成你的github用户名)
                    password = token(刚才上面第三步最后保存的那个密码)
                }
                 url "https://maven.pkg.github.com/dhs964057117/Shadow/packages/"
这里改成"https://maven.pkg.github.com/${username}(你的用户名)/${repositoryUrl}(你的仓库地址)/packages/
//后面一定要加packages
比如我这里就是:https://maven.pkg.github.com/dhs964057117/Shadow/packages/

然后publish,成功!!可以看到右边packages这里有东西了,最后效果:

在别的项目用到的话,配置maven地址跟上面一样

然后就可以下载了

不过这里有个缺陷,上面生成的那个key权限太高,可以读写你的仓库内容,也就是说你这个Key不能暴露出去,不然别人可以随意的发布修改。如果要提供给别人只能下载你的依赖,可以再生成一个Key只授予read权限即可

相关推荐
alexhilton2 小时前
藏在设备上的秘密,终究藏不住
android·kotlin·android jetpack
明月_清风3 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
hai_android8 小时前
Kotlin / Android 常用函数使用示例手册
android·java·kotlin
hai_android9 小时前
Android MeasureSpec 详解
android·java·kotlin
又见情义10 小时前
RK3568 Android 13 本地 U 盘 OTA 升级实战:基于 RKUpdateService 的完整流程
android
今年下半年11 小时前
SpringBoot整合金蝶中间件
spring boot·中间件·maven
Godikov12 小时前
Android10后台弹窗与APK自动更新
android
又见情义13 小时前
RK3568 Android 13 USB OTG/Host 切换调试经验分享
android
终端安全笔记14 小时前
iOS 27 之后「策略空转」:设备升级不报错,但旧策略不再管它
android·网络·安全·ios·智能手机
JMchen15 小时前
实战案例:实现120fps流畅的渐变进度条
android·kotlin·canvas