如何使用 Gradle 推送到 Github 包注册表

尝试将 Gradle 项目推送到 Github 包注册表,但未按预期工作。

使用 Gradle 的插件。io.freefair.github.package-registry-maven-publish

使用发布所需的数据配置 GitHub - 代码如下。并运行发布任务。没有错误,但我在 GitHub 包注册表中看不到我的包。build.gradlepublishAllPublicationsToGutHub

github {
    slug
    username = "myGitUserName"
    token = "myTokenWithRightAccess"
    tag = "HEAD"
    travis = true
}

期待一些如何使用Gradle发布到Github包注册表的示例,或者我在发布时做错了什么


答案 1

新答案

GitHub 发布了官方指南:配置 Gradle 以用于 GitHub 包


旧答案

似乎插件还不是很稳定。看看我创建的存储库,其中设置了所有内容。我设法在这里发布了一些带有该插件的软件包。

即使包已发布,Gradle也会由于以下问题而将任务显示为失败:maven-metadata.xml

> Task :publishMainPublicationToGitHub madhead Maven PackagesRepository FAILED
Could not transfer metadata so57323260:test/maven-metadata.xml from/to remote (https://maven.pkg.github.com/madhead): Could not get resource 'so57323260/test/maven-metadata.xml'

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':publishMainPublicationToGitHub madhead Maven PackagesRepository'.
> Failed to publish publication 'main' to repository 'GitHub madhead Maven Packages'
   > Could not GET 'https://maven.pkg.github.com/madhead/so57323260/test/maven-metadata.xml'. Received status code 422 from server: Unprocessable Entity

但没关系,可能有一天会修好。

我注意到,由于Maven出版物不正确,软件包可能无法发布(请参阅链接的问题)。现在看来,它应该等于Github的项目名称。所以,就我而言,我不得不用作项目。这不是软件包在Maven中通常的工作方式,所以这可能是你的问题。groupIdso57323260groupIdmadhead/so57323260


答案 2

我能够使用maven-publish插件发布到Github Package Registry。它现在似乎工作得很好。

我的 build.gradle 文件如下所示:

buildscript {
    repositories {
        mavenCentral()
    }
}

plugins {
    id 'java'
    id 'maven-publish'
}

group 'com.company.project'
archivesBaseName = 'library-name'
version '0.1.0'

repositories {
    mavenCentral()
}

dependencies {
  // java dependencies
}

publishing {
    repositories {
        maven {
            name = "Github"
            url = uri("https://maven.pkg.github.com/<OWNER>/<REPO>")
            credentials {
                username = findProperty("github.username")
                password = findProperty("github.token")
            }
        }
    }
    publications {
        register("jar", MavenPublication) {
            from(components["java"])
            pom {
                url.set("https://github.com/<OWNER>/<REPO>.git")
            }
        }
    }
}

将您的 github 用户名和令牌放入 gradle.properties 文件中。


推荐