Java 如何使用Gradle推送到Github包注册表
试图将Gradle项目推送到Github包注册表,但未按预期工作 使用io.freefair.github.PackageRegistryMaven发布Gradle插件 在Java 如何使用Gradle推送到Github包注册表,java,maven,gradle,github-package-registry,Java,Maven,Gradle,Github Package Registry,试图将Gradle项目推送到Github包注册表,但未按预期工作 使用io.freefair.github.PackageRegistryMaven发布Gradle插件 在build.gradle中使用发布所需的数据配置GitHub-代码如下。并运行发布任务publishAllPublicationsToGutHub。没有收到错误,但在GitHub包注册表中看不到我的包 github { slug username = "myGitUserName" token = "m
build.gradle
中使用发布所需的数据配置GitHub-代码如下。并运行发布任务publishAllPublicationsToGutHub
。没有收到错误,但在GitHub包注册表中看不到我的包
github {
slug
username = "myGitUserName"
token = "myTokenWithRightAccess"
tag = "HEAD"
travis = true
}
希望得到一些示例,说明如何使用Gradle发布到Github软件包注册表,或者发布新答案时我做错了什么:
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发布的groupId
不正确,包可能无法发布(请参阅)。现在看来,它应该等于Github的项目名称。因此,在我的例子中,我必须使用so57323260
作为groupId
用于madhead/so57323260
项目。Maven中的包通常不是这样工作的,所以这可能是您的问题。我能够使用Maven发布插件发布到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")
}
}
}
}
buildscript{
存储库{
mavenCentral()
}
}
插件{
id‘java’
id“maven publish”
}
组“com.company.project”
archivesBaseName='库名称'
版本“0.1.0”
存储库{
mavenCentral()
}
依赖关系{
//java依赖项
}
出版{
存储库{
马文{
name=“Github”
url=uri(“https://maven.pkg.github.com//")
证书{
username=findProperty(“github.username”)
password=findProperty(“github.token”)
}
}
}
出版物{
寄存器(“jar”,MavenPublication){
来自(组件[“java”])
聚甲醛{
url.set(“https://github.com//.git")
}
}
}
}
将您的github用户名和令牌放入gradle.properties文件。github已经发布了关于如何使用github packager的gradle的官方文档
正确填写这些属性
所有者
存储库
用户名(或渐变属性gpr.user
)
密码(或渐变属性gpr.key
)
@见演示
还值得设置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 }}
每次我们创建一个发布标签并将该标签作为版本时,它都会发布一个包。谢谢你,伙计,它对我有效,与你有相同的错误,在“3.8.2”版本上它不起作用,有不同的错误。预计我只需要提供“GitHub”块就可以发布,但我需要添加“publishing”块和“maven publish”插件才能使其正常工作。还有一个问题,Gradle现在如何作为依赖项访问GitHub包注册表,再次感谢您的回答?@DOIT,on,所以这是一个新的问题。。。新问题。所以,我已经为你问了一个(也回答了!)。看一看,这个功能看起来太过测试版了。我可以用x.y.z版本发布,但无法发布下一个版本。然后,当我删除所有版本时,我就可以发布了。然后我就不能再发布了:)在我们的例子中,问题是出版物中的groupId
和version
。gpr
块您不应该将GitHub令牌放入存储库中的gradle.properties
。令牌是一个机密,其他用途不得公开。您应该将gradle.properties文件放在~/.gradle/gradle.properties中