如何使用Gradle推到GitHub包装注册表



试图将gradle项目推向GitHub软件包注册表,但无法按预期工作。

使用io.freefair.github.package-registry-maven-publish插件进行gradle。

build.gradle中配置GITHUB,其中需要在下面发布 - 代码的数据。并运行发布任务publishAllPublicationsToGutHub。没有错误,但我看不到我的软件包在GitHub软件包注册表中。

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

期望如何使用gradle发布到GitHub软件包注册表,或者在发布时做错了什么

新答案

GitHub已发布官方指南:配置Gradle以与GitHub软件包一起使用。


旧答案

似乎插件还不是很稳定。看一下我创建的存储库,该存储库设置了所有设置。我设法在此处发布了使用该插件的一些软件包。

即使发布了软件包,由于maven-metadata.xml的某些问题:

,Gradle将任务显示为失败的任务。
> 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出版物的groupId不正确,这些软件包可能不会发布(请参阅链接问题(。似乎现在应该等于GitHub的项目名称。因此,就我而言,我必须将so57323260用作madhead/so57323260项目的groupId。这不是包装在Maven中的工作方式,因此可能是您的问题。

我能够使用Maven-Publish插件发布到GitHub软件包注册表。现在似乎正常工作。

我的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文件中。

也值得设置github操作以发布到github软件包repo:


name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Publish package
        run: gradle -Pversion=${{ github.event.release.tag_name }} build publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

每次我们创建以该标签为版本的发行标签时,都会发布一个软件包。

github已发布了如何与github packager一起使用gradle

的官方文件

https://help.github.com/en/github/managing-packages-with-github-packages/configuring-gradle-for-use-with-with-with-github-packages #authenticating to-github-packages

正确完成这些属性

  1. 所有者
  2. 存储库
  3. 用户名(或Gradle属性gpr.user(
  4. 密码(或Gradle属性gpr.key(

@See demo

  1. https://github.com/youngerier/packagesdemo

  2. https://help.github.com/en/github/managing-packages-with-github-packages/configuring-gradle-for-use-use-with-with-github-packages

最新更新