【问题标题】:How do I use token auth for Github Packages from Gradle?如何使用来自 Gradle 的 Github 包的令牌身份验证?
【发布时间】:2026-02-09 08:45:01
【问题描述】:

https://docs.github.com/en/packages/guides/configuring-gradle-for-use-with-github-packages 上的示例配置似乎不起作用,因为看起来 GitHub 包实际上并不接受基本身份验证。我从 https://github.com/settings/tokens 检索到来自 GitHub 的令牌,但我看不到在 Gradle 中将其用于 Bearer auth 的方法。

我问这个是为了回答它。

【问题讨论】:

    标签: maven github gradle authorization token


    【解决方案1】:

    在您的 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")
            }
        }
    }
    

    &lt;OWNER&gt; 替换为拥有repo 的用户或组织的名称,并将&lt;GIT_REPO&gt; 替换为生成包的git 存储库的名称。然后,您将在https://github.com/settings/tokens 上生成的令牌添加到与build.gradle.kts 相同的目录中的gradle.properties。它应该看起来像:

    gpr.token=<Token, without quotes>
    

    该文件可能已经存在其他设置,您无需删除它们。 请勿提交此文件

    如果这仍然不起作用,请验证您生成的令牌是否具有read:packages 权限。如果没有,您需要生成一个新令牌。

    希望这可以为您节省 4 个小时的时间来弄清楚发生了什么。

    【讨论】:

    • 您不应将凭据放在项目的 gradle.properties 文件中。此文件包含构建项目的重要变量,应提交。没有它,您的项目将变得四肢瘫痪。您希望将这些变量存储在用户的全局 gradle.properties 文件中,而不是通常位于 $GRADLE_USER_HOME/gradle.properties 中,通常默认为 ~/.gradle/gradle.properties