Как перейти в реестр пакетов Github с помощью Gradle
Попытка перенести проект Gradle в реестр пакетов Github, но не работает должным образом.
Использование плагина io.freefair.github.package-registry-maven-publish для Gradle.
Сконфигурируйте GitHub в build.gradle с данными, необходимыми для публикации - код ниже. И запустите задачу публикации 'publishAllPublicationsToGutHub'. Ошибка не появляется, но я не вижу свой пакет в реестре пакетов GitHub.
github{
slug
username="myGitUserName"
token="myTokenWithRightAccess"
tag="HEAD"
travis=true
}
Ожидаю несколько примеров того, как публиковать в Github реестр реестра с помощью Gradle, или что я делаю неправильно при публикации
1 ответ
Похоже, плагин еще не очень стабилен. Взгляните на созданный мной репозиторий, в котором все настроено. Мне удалось опубликовать несколько пакетов с этим плагином здесь.
Даже если пакеты опубликованы, 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
Но это нормально, вероятно, будет исправлено в один прекрасный день.
Я заметил, что пакеты могут быть не опубликованы (см. Связанную проблему) из-за неправильной groupId
из Maven публикации. Кажется, прямо сейчас оно должно быть равно названию проекта Github. Итак, в моем случае мне пришлось использовать so57323260
как groupId
для madhead/so57323260
проект. Обычно в Maven пакеты не работают, так что это может быть вашей проблемой.
Также стоит настроить действие github для публикации в репозитории пакетов github:
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 с помощью плагина maven-publish. Кажется, теперь все работает нормально.
Мой файл 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 опубликовал официальный документ Как использовать Gradle с упаковщиком GitHub
Правильно заполните эти свойства
- ВЛАДЕЛЕЦ
- ХРАНИЛИЩЕ
- USERNAME (или свойство gradle
gpr.user
) - ПАРОЛЬ (или свойство gradle
gpr.key
)
@ Смотри демонстрацию