Как добавить пакет реестра пакетов GitHub в качестве зависимости Gradle

Итак, у меня есть проект GitHub с настроенным реестром пакетов. Имеет два пакета:

«Два

На страницах пакетов есть инструкции только для Maven, кроме того, инструкции не работают (maven install so57323260 не является допустимым способом добавления зависимости в Maven):

Страница пакета с неработающими инструкциями Maven

Вопрос: как добавить этот пакет в сборку Gradle?


person madhead    schedule 06.08.2019    source источник
comment
На странице вашего проекта репозитория указано: ~ Пакеты не опубликованы   -  person IgorGanapolsky    schedule 16.06.2021
comment
@IgorGanapolsky, это потому, что я несколько раз очищал все свои незакрытые пакеты.   -  person madhead    schedule 16.06.2021


Ответы (2)


Новый ответ:

GitHub опубликовал официальное руководство: Настройка Gradle для использования с пакетами GitHub.


Старый ответ:

Сначала настройте реестр пакетов Github как репозиторий Maven в конфигурации сборки Gradle:

build.gradle.kts:

repositories {
    jcenter()
    maven("https://maven.pkg.github.com/madhead") {
        credentials {
            username = "madhead"
            password = "<token>"
        }
    }
}

Вы можете сгенерировать токен на своей странице настроек учетной записи.

Теперь добавьте зависимость вроде:

build.gradle.kts:

dependencies {
    implementation("so57323260:so57323260:1.0.0")
    implementation("so57323260:test:1.0.2")
}

Здесь groupId - имя репо, а artifactId - имя опубликованного пакета.

person madhead    schedule 06.08.2019
comment
Невозможно зависеть от общедоступного пакета в реестре пакетов GitHub без жесткого кодирования чьего-либо имени пользователя GitHub и токена в файле сборки, не так ли? - person sim642; 06.10.2019
comment
Почему жесткое кодирование? Вы можете сохранить значения в файле свойств или в среде и получить их с помощью System.getenv или System.getProperty - person madhead; 07.10.2019
comment
Тем не менее, это значительно больше работы для всех, кто пытается просто клонировать и запускать проект с зависимостями, которые публично существуют в реестре пакетов GitHub, а не в Maven Central или jCenter. Я надеялся, что не будет такого совершенно ненужного ограничения, заставляющего всех настраивать некоторые вещи, специфичные для GitHub, только для автоматического использования JAR, доступных публично. - person sim642; 07.10.2019
comment
Похоже, у меня это не работает. Gradle не найдет ни мои пакеты, ни ваш примерный пакет. - person cansik; 27.10.2019
comment
Есть ли какие-либо проблемы с безопасностью, позволяющие вашему собственному имени пользователя и токену только для чтения в файле свойств gradle? - person elect; 14.11.2019
comment
он работает только с gradle install для меня, не обновляя градиент в IntelliJ. Также мой проект IntelliJ не находит класс библиотеки: github.com/madhead/so57323260/blob/master/src/main/kotlin/by/ gradle install не находит мой пакет github.com/ttiganik/hrd-java-test-registry/packages/60280 с implementation 'hrd-java-test-registry:test-registry:1.0-snapshot' и maven (maven.pkg.github.com/ttiganik) - person tonisives; 21.11.2019
comment
Не удалось получить неизвестное свойство java для набора SoftwareComponentInternal типа org.gradle.api.internal.component.DefaultSoftwareComponentContainer. - person Dejas; 11.12.2019
comment
Следует ли нам следовать вашему старому ответу или новому ответу? - person IgorGanapolsky; 16.06.2021
comment
@IgorGanapolsky, следите за документами. Я думаю, что эти вопросы и ответы устарели. - person madhead; 16.06.2021

Для тех, кто беспокоится о безопасности токена личного доступа, официальное руководство предлагает получить доступ к имени пользователя и паролю через свойство Gradle или системное свойство.

Шаг 1. Задайте ИМЯ ПОЛЬЗОВАТЕЛЯ и ТОКЕН как системное свойство (с export или set) или создайте файл gradle.properties в корневой папке проекта следующим образом:

gpr.user=<USERNAME>
gpr.token=<TOKEN>

Шаг 2: Добавьте реестр пакетов Github с аутентификацией в build.gradle:

    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.token") ?: System.getenv("TOKEN")
            }
        }
    }

Шаг 3: Добавьте пакет, который вы хотите использовать, в build.gradle:

dependencies {
    implementation 'com.example:package:version'
}

Для получения дополнительных сведений (в том числе о настройке Maven) см. Инструкции в Wiki, который я предоставил здесь: https://github.com/GumTreeDiff/gumtree/wiki/Getting-Started

person K. Symbol    schedule 27.03.2021
comment
Нам не нужно жестко кодировать gpr.user и gpr.token. Github уже надежно хранит их для нас, и нам просто нужно сделать: System.getenv("GITHUB_ACTOR") и System.getenv("GITHUB_TOKEN") - person IgorGanapolsky; 16.06.2021