上传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权限即可

相关推荐
我命由我1234512 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
朗迹 - 张伟13 小时前
Tauri2 导出 Android 详细教程
android
lpruoyu13 小时前
【Android第一行代码学习笔记】Android架构_四大组件_权限_持久化_通知_异步_服务
android·笔记·学习
独自破碎E14 小时前
【BISHI15】小红的夹吃棋
android·java·开发语言
李堇17 小时前
android滚动列表VerticalRollingTextView
android·java
lxysbly19 小时前
n64模拟器安卓版带金手指2026
android
我真会写代码19 小时前
SSM(指南一)---Maven项目管理从入门到精通|高质量实操指南
java·spring·tomcat·maven·ssm
游戏开发爱好者81 天前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20351 天前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥1 天前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder