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

相关推荐
人生游戏牛马NPC1号3 小时前
学习 Flutter (三):玩安卓项目实战 - 上
android·学习·flutter
小馬佩德罗5 小时前
Android系统的问题分析笔记 - Android上的调试方式 debuggerd
android·调试
清霜之辰6 小时前
安卓基于 FirebaseAuth 实现 google 登录
android·google·auth·firebase
GitLqr6 小时前
数码洞察 | Apple VS DMA、三星新品、Android 16KB Page Size
android·ios·samsung
alexhilton7 小时前
SnapshotFlow还是collectAsState?对于Jetpack Compose来说哪个更香?
android·kotlin·android jetpack
Erwooow7 小时前
Android 16k jni修改
android
l软件定制开发工作室8 小时前
基于Android的景点旅游信息系统App
android
张可8 小时前
一个KMP/CMP项目的组织结构和集成方式
android·前端·kotlin
林林要一直努力8 小时前
AOSP Settings模块问题初窥
android·学习·bug·android studio
顾林海8 小时前
Android 性能优化:启动优化全解析
android·java·面试·性能优化·zygote