【发布时间】:2020-06-09 13:00:57
【问题描述】:
我是公共 GitHub 存储库的维护者。我已经设置了 GitHub Actions 来构建发布到 GitHub Packages。您可以在此处看到包已创建:
https://github.com/paulschwarz/spring-dotenv/packages/135114
我注意到的第一件事是 GitHub 只提供了一个 Maven 安装 sn-p。我使用此代码将依赖项添加到另一个项目,它似乎可以工作。
现在我想将此包导入 Gradle 项目。我加了
dependencies {
implementation ('me.paulschwarz:spring-dotenv:0.0.3')
}
gradle 告诉我
Could not find me.paulschwarz:spring-dotenv:0.0.3.
Searched in the following locations:
- https://jcenter.bintray.com/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom
- https://repo.maven.apache.org/maven2/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom
这已经很奇怪了,因为我的 Maven 项目似乎没有解决依赖关系的问题。我必须说我很好奇它是如何工作的? GitHub Packages 肯定没有与 JCenter 或 Maven Central 集成?
不管怎样,下一步,添加存储库
repositories {
jcenter()
mavenCentral()
maven { url = uri('https://maven.pkg.github.com/paulschwarz/spring-dotenv') }
}
此时,Gradle 应该知道在哪里可以找到包。但是,我明白了
> Could not resolve me.paulschwarz:spring-dotenv:0.0.3.
> Could not get resource 'https://maven.pkg.github.com/paulschwarz/spring-dotenv/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom'.
> Could not GET 'https://maven.pkg.github.com/paulschwarz/spring-dotenv/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom'. Received status code 401 from server: Unauthorized
这真的是未经授权的 401 吗?还是 URL 错误,它正在尝试访问授权端点?
如果是真的,那为什么?这是一个带有公共包的公共仓库。我可以直接从 GitHub 页面匿名下载包。我在 Gradle 中做错了什么?
【问题讨论】:
-
我在 github 文档页面上读到,事实上,即使安装软件包,身份验证似乎也是必要的。这对我来说似乎有点奇怪。那么拥有公共包有什么意义呢?我不需要针对 Maven Central 进行身份验证。
-
您好,GH 注册中心还很年轻,一些身份验证用例存在一些问题。但请记住,作为公共存储库不是 GH 注册表的目标,因为它们已经存在并且默认设置在各种包管理器(npmjs.org、Docker Hub、Maven Central ...)中。主要用例是私有包,在任何情况下您都必须对其进行一些配置。
-
我认为使用 GitHub 包是一种让我编写的库可公开访问的简单方法。看起来我可能不得不在 maven Central 上发布,从我所阅读的内容来看,这很痛苦。
标签: maven gradle github-package-registry