https://docs.github.com/en/packages/guides/configuring-gradle-for-use-with-github-packages上的示例配置似乎不起作用,因为 GitHub 包看起来不起作用实际上并不接受基本身份验证。我从 https://github.com/settings/tokens 检索到了来自 GitHub 的令牌,但我没有找到在 Gradle 中使用它进行 Bearer 身份验证的方法。
我问这个问题是为了回答它。
gradle.build.kts
的存储库部分中,包含以下内容:
repositories {
...
maven("https://maven.pkg.github.com/<OWNER>/<GIT_REPO>") {
credentials(HttpHeaderCredentials::class) {
name = "Authorization"
value = "Bearer ${project.findProperty("gpr.token") as String}"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
将 <OWNER>
替换为拥有存储库的用户或组织的名称,将
<GIT_REPO>
替换为生成包的 git 存储库的名称。然后,您将在https://github.com/settings/tokens 上生成的令牌添加到全局
gradle.properties
,通常位于
$GRADLE_USER_HOME/gradle.properties
,通常默认为
~/.gradle/gradle.properties
(也可以将凭据放入 gradle.properties
与您的
build.gradle.kts
位于同一目录中,但这是不安全,不推荐!)。 它应该看起来像:
gpr.token=<Token, without quotes>
该文件可能已经存在并具有其他设置,您无需删除它们。 请勿提交此文件。
如果这仍然不起作用,请验证您生成的令牌是否具有read:packages
权限。如果没有,您需要生成一个新令牌。希望这可以为您节省 4 个小时的时间,让我弄清楚发生了什么。