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

相关推荐
不法1 小时前
java查看安卓证书信息
android
儿歌八万首1 小时前
Jetpack Compose 动画实战:让你的 UI 动起来
android·kotlin·动画·compose
千里马学框架1 小时前
如何改进车载三分屏SplitScreen启动交互方式?
android·智能手机·分屏·aaos·安卓framework开发·车载开发·3分屏
REDcker3 小时前
Android WebView 版本升级方案详解
android·音视频·实时音视频·webview·js·编解码
麦兜*3 小时前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
le1616163 小时前
Android 依赖种类及区别:远程仓库依赖、打包依赖、模块依赖、本地仓库依赖
android
lxysbly3 小时前
psp模拟器安卓版带金手指
android
云上凯歌4 小时前
02 Spring Boot企业级配置详解
android·spring boot·后端
hqiangtai4 小时前
Android 高级专家技术能力图谱
android·职场和发展
aqi004 小时前
FFmpeg开发笔记(九十七)国产的开源视频剪辑工具AndroidVideoEditor
android·ffmpeg·音视频·直播·流媒体