如何将GitHub Package Registry软件包添加为Gradle依赖项

mad*_*ead 7 github gradle maven github-package-registry

因此,我有一个配置了Package Registry 的GitHub项目。它有两个软件包:

Github软件包注册表中发布了两个软件包

软件包页面仅具有针对Maven的指令,此外,指令已损坏(maven install so57323260这不是在Maven中添加依赖项的有效方法):

带有错误的Maven指令的软件包页面

问题是:如何在Gradle版本中添加该软件包

mad*_*ead 6

新答案

GitHub已发布官方指南:配置Gradle以与GitHub Packages一起使用


旧答案

首先,在您的Gradle构建配置中将Github Package Registry配置为Maven存储库:

build.gradle.kts:

repositories {
    jcenter()
    maven("https://maven.pkg.github.com/madhead") {
        credentials {
            username = "madhead"
            password = "<token>"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在帐户设置页面中生成令牌。

现在,添加一个类似的依赖项:

build.gradle.kts:

dependencies {
    implementation("so57323260:so57323260:1.0.0")
    implementation("so57323260:test:1.0.2")
}
Run Code Online (Sandbox Code Playgroud)

groupId是存储库的名称,artifactId也是已发布软件包的名称。

  • 如果不在构建文件中对某人的GitHub用户名和令牌进行硬编码,就不可能依赖GitHub Package Registry上的公共包,是吗? (3认同)
  • 尽管如此,对于任何其他想要克隆并运行具有GitHub Package Registry上公开存在的依赖关系(而不是Maven Central或jCenter)的项目的人来说,这仍然是更多的工作。我希望不会有如此完全不必要的限制,迫使每个人都设置一些特定于GitHub的东西,只是为了自动利用可公开访问的JAR。 (3认同)
  • 这似乎对我不起作用。gradle 不会找到我的包和您的示例包。 (2认同)

K. *_*bol 5

对于担心个人访问令牌安全性的人,官方指南建议通过Gradle属性或系统属性访问用户名和密码。

Step1:将USERNAME和TOKEN设置为系统属性(用exportset),或者gradle.properties在项目根文件夹下创建一个文件,如下所示:

gpr.user=<USERNAME>
gpr.token=<TOKEN>
Run Code Online (Sandbox Code Playgroud)

Step2:在build.gradle中添加带有身份验证的Github包注册表:

    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.token") ?: System.getenv("TOKEN")
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

第三步:在build.gradle中添加你要消费的包:

dependencies {
    implementation 'com.example:package:version'
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息(包括如何配置 Maven),请参阅我在此处贡献的 Wiki 中的说明:https : //github.com/GumTreeDiff/gumtree/wiki/Getting-Started

  • 我们不需要硬编码 **gpr.user** 和 **gpr.token**。Github 已经为我们安全地存储了这些,我们只需要执行: `System.getenv("GITHUB_ACTOR")` 和 `System.getenv("GITHUB_TOKEN")` (2认同)