Доступ к личному реестру пакетов Maven Github с помощью Gradle - PullRequest
4 голосов
/ 15 октября 2019

У меня есть личный репозиторий под пользователем X и именем репозитория Y :

https://github.com/X/Y

Этот проект Java построен с использованием Gradle.

Файл конфигурации Gradle был настроен, как описано в официальной документации Реестр пакетов Github , и я могу успешно опубликовать свой пакет:

https://help.github.com/en/articles/configuring-gradle-for-use-with-github-package-registry#publishing-a-package

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)
        }
    }
}

Как вы можете видеть в конфигурации выше, я использовал соответственно 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")
        }
    }
}

, и я добавил зависимость следующим образом:

implementation 'A:B:1.0.0'

, но 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> 

Я пытался изменить свойимпорт зависимостей в:

implementation 'com.github.X/Y:A.B:1.0.0'

, но он не может быть разрешен снова.

Я также безуспешно пытался использовать следующий URL-адрес в хранилище:

Как я могу использовать частный артефакт Github Package Repository из другого проекта Gradle? Что не так с моей текущей настройкой?

1 Ответ

3 голосов
/ 19 октября 2019

Короче

URL разрешения хранилища должен быть

https://maven.pkg.github.com/X/Y

(где Xявляется владельцем репозитория GitHub и Y репозитарием GitHub, как обычно)

Обратите внимание, что этот репозиторий 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
    }
}

С помощью этого автономного сценария build.gradle вы можетевыполните следующую команду, чтобы увидеть загруженные файлы зависимостей в вашем домашнем компьютере пользователя Gradle:

GITHUB_PACKAGE_REGISTRY_USER=my_user_name GITHUB_PACKAGE_REGISTRY_API_KEY=my_private_token ./gradlew foo
...