当前位置: 首页 > 知识库问答 >
问题:

使用Gradle访问私有Maven Github包注册表

苗学民
2023-03-14

我在用户X和存储库名称Y下有一个私有存储库:

https://github.com/X/Y

这是一个用Gradle构建的Java项目。

Gradle配置文件已按照官方Github软件包注册表文档中的说明进行配置,我能够成功发布我的软件包:

https://help.github.com/en/articles/configuring-gradle-for-use-with-github-package-registry#publishing-a-package

publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/X/Y")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_PACKAGE_REGISTRY_USER")
                password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_PACKAGE_REGISTRY_API_KEY")
            }
        }
    }
    publications {
        github(MavenPublication) {
            groupId = 'A'
            artifactId = 'B'
            version = '1.0.0'

            from(components.java)
        }
    }
}

正如您在上面的配置中看到的,我分别为group pId和artifactId使用了A和B。版本为1.0.0。

我的问题是从另一个Gradle项目中检索这个私有依赖项。此项目具有特定的存储库配置,如下所示:

repositories {
    jcenter()
    maven {
        url = 'https://maven.pkg.github.com/X/Y'
        credentials {
            username System.getenv("GITHUB_PACKAGE_REGISTRY_USER")
            password System.getenv("GITHUB_PACKAGE_REGISTRY_API_KEY")
        }
    }
}

我添加了如下依赖项:

implementation 'A:B:1.0.0'

但是Gradle无法解决依赖关系。

存储库URL(https://maven.pkg.github.com/X/Y)似乎还可以,因为我可以用正确的凭据在浏览器上打开它。不幸的是,我无法浏览层次结构。

当我打开Github网站上的包摘要页面时,我注意到一些奇怪的事情。此外,工件是在groupId A和artifactId B下发布的,它显示了以下安装说明:

<dependency>
  <groupId>com.github.X/Y</groupId>
  <artifactId>A.B</artifactId>
  <version>1.0.0</version>
</dependency> 

我试图将依赖项导入更改为:

implementation 'com.github.X/Y:A.B:1.0.0'

但无法再次解决。

我还尝试了以下作为存储库URL,但没有成功:

  • https://github.com/X/Y/packages
  • https://maven.pkg.github.com/X

如何使用另一个Gradle项目中的私有Github包存储库工件?我当前的设置有什么问题?

共有1个答案

贾骏
2023-03-14

分辨率存储库URL需要

https://maven.pkg.github.com/X/Y

(其中X是GitHub存储库所有者,Y是GitHub存储库,与往常一样)

请注意,无法浏览此Maven存储库。您只能从中下载以前发布过的确切文件,如https://maven.pkg.github.com/X/Y/A/B/1.0.0/B-1.0.0.pom

GitHub包注册表留档诚然仍然有点混乱(甚至可能是错误的)。

我可以通过以下Gradle构建配置(和Gradle 5.6.2)成功下载依赖项:

plugins {
    id 'java'
}

repositories {
    maven {
        url = 'https://maven.pkg.github.com/X/Y'
        credentials {
            username = System.getenv("GITHUB_PACKAGE_REGISTRY_USER")
            password = System.getenv("GITHUB_PACKAGE_REGISTRY_API_KEY")
        }
    }
}

dependencies {
    implementation 'A:B:1.0.0'
}

task foo() {
    doLast {
        println configurations.runtimeClasspath.files
    }
}

使用此自包含的build.gradle脚本,您可以运行以下操作以查看Gradle用户主页中下载的依赖文件:

GITHUB_PACKAGE_REGISTRY_USER=my_user_name GITHUB_PACKAGE_REGISTRY_API_KEY=my_private_token ./gradlew foo

更多信息可以在GitHub文档中找到。

 类似资料:
  • 我正在尝试将一个图像推送到我的docker私有存储库: Docker告诉我: push引用存储库[living-registry.com:5000/busybox]Get https://living-registry.com:5000/v1/_ping:read tcp 195.83.122.16:39714->195.83.122.16:5000:read:对等体重置连接 这些命令正在Core

  • 我可以在Resources->Registrys中定义azure注册表凭据并对其进行身份验证以创建工作负载。(工作负载访问私有azure注册表,并使用凭据集对其进行身份验证) 现在,如果我创建一个Helm图表,访问同一个私有Azure注册表来提取映像并创建一个pod,它会失败,表示无法提取docker映像。我对此进行了研究,发现K8s部署可以找到Rancher UI中设置的凭据,但kublet没有

  • 注册与访问 打开后台-会员-注册与访问 1.注册类型:普通注册/邮箱注册/手机注册 如开启邮箱和手机注册,请在通知系统功能中进行邮箱与短信通知配置,游客在注册时通过验证后方能注册成功 2.后台验证码是否开启:开启后显示 商城验证码是否开启:开启后显示 3.是否允许注册会员:设置为不允许则游客无法注册成为站点会员 4.错误多次后显示:配置该项后,开启验证码后验证码默认不显示,在登录错误次数达到设置值

  • 本文向大家介绍使用Python的Windows注册表访问(Winreg),包括了使用Python的Windows注册表访问(Winreg)的使用技巧和注意事项,需要的朋友参考一下 作为一种通用的语言,以及大量用户支持的模块的可用性,我们发现python在操作系统级别的编程方面也很擅长。在本文中,我们将看到python如何访问Windows操作系统的注册表。 我们需要将名为winreg的模块导入py

  • 试图将Gradle项目推送到Github包注册表,但未按预期工作。 使用Gradle插件。 在带有需要发布的数据-代码如下。并运行发布任务。没有收到错误,但在GitHub包注册表中看不到我的包。 期待一些例子,如何发布到Github包注册表与Gradle或我在发布时做错了什么

  • 问题内容: 我创建了两个Docker容器。第一个提供专用的Docker注册表,第二个提供官方Docker注册表的镜像: 现在,我想将两者结合起来。每当用户 提取 图像时,都应首先查询私有注册表,然后查询镜像。当图像被 推送时, 它们仅应被推送到私有注册表。 我不知道如何做到这一点。任何帮助表示赞赏。 问题答案: 您不能仅仅强制所有 docker push 命令推送到您的私有注册表。原因之一是您可以