Lau*_*ent 7 github gradle maven github-package-registry
我在用户X和存储库名称Y下有一个私有存储库:
这是一个用 Gradle 构建的 Java 项目。
Gradle 配置文件已按照官方Github 包注册表文档中的说明进行配置,我可以成功发布包:
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在上面的配置中看到的,我分别使用了A和B作为 groupId 和 artifactId。版本是 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")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了依赖项,如下所示:
implementation 'A:B:1.0.0'
Run Code Online (Sandbox Code Playgroud)
但 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>
Run Code Online (Sandbox Code Playgroud)
我试图将我的依赖项导入更改为:
implementation 'com.github.X/Y:A.B:1.0.0'
Run Code Online (Sandbox Code Playgroud)
但它无法再次解决。
我还尝试将以下内容作为存储库 URL,但没有成功:
如何使用来自另一个 Gradle 项目的私有 Github 包存储库工件?我目前的设置有什么问题?
Chr*_*iki 10
解析存储库 URL 需要是
https://maven.pkg.github.com/X/Y
(像往常一样,XGitHub 存储库所有者和YGitHub 存储库在哪里)
请注意,无法浏览此 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
}
}
Run Code Online (Sandbox Code Playgroud)
使用此自包含build.gradle脚本,您可以运行以下命令以在您的 Gradle 用户主页中查看下载的依赖文件:
GITHUB_PACKAGE_REGISTRY_USER=my_user_name GITHUB_PACKAGE_REGISTRY_API_KEY=my_private_token ./gradlew foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1892 次 |
| 最近记录: |