Skip to main content

Работа с реестром Gradle

Вы можете настроить в Gradle публикацию пакетов в реестр Gradle GitHub Packages и использование пакетов, хранящихся в GitHub Packages, в качестве зависимостей в проекте Java.

GitHub Packages доступно с GitHub Free, GitHub Pro, GitHub Free для организаций, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server версии 3.0 или более новой и GitHub AE. Дополнительную информацию об обновлении экземпляра GitHub Enterprise Server см. в разделе Сведения об обновлении до новых выпусков, а также просмотрите Upgrade assistant, чтобы найти путь обновления с вашей текущей версии выпуска.

Примечание. Этот тип пакета может быть недоступен для вашего экземпляра, так как администраторы сайта могут включать или отключать каждый поддерживаемый тип пакета. Дополнительные сведения см. в разделе Настройка поддержки пакетов для предприятия.

Проверка подлинности в GitHub Packages

Для публикации, установки и удаления частных, внутренних и общедоступных пакетов требуется маркер доступа.

Вы можете использовать personal access token для проверки подлинности в GitHub Packages или GitHub Enterprise Server. При создании personal access token маркер можно назначить различным областям в зависимости от ваших потребностей. Дополнительные сведения о связанных с пакетами областях для personal access token см. в разделе Сведения о разрешениях для пакетов GitHub.

Для проверки подлинности в реестре GitHub Packages в рабочем процессе GitHub Actions можно использовать следующее:

  • GITHUB_TOKEN для публикации пакетов, связанных с репозиторием рабочих процессов.
  • personal access token с по крайней мере read:packages областью установки пакетов, связанных с другими частными репозиториями (которые GITHUB_TOKEN не могут получить доступ).

Дополнительные сведения об GITHUB_TOKEN, используемом в рабочих процессах GitHub Actions, см. в разделе Проверка подлинности в рабочем процессе. Дополнительные сведения об использовании GITHUB_TOKEN с Gradle см. в статье Публикация пакетов Java с помощью Gradle.

Проверка подлинности с помощью personal access token

Для публикации и установки пакетов в GitHub Packages необходимо использовать personal access token с соответствующими областями. Дополнительные сведения см. в статье "Сведения о GitHub Packages".

Вы можете пройти проверку подлинности в GitHub Packages с помощью Gradle Groovy или Kotlin DSL, изменив файл build.gradle (Gradle Groovy) или файл build.gradle.kts (Kotlin DSL), чтобы включить personal access token. Вы также можете настроить Gradle Groovy и Kotlin DSL для распознавания одного пакета или нескольких пакетов в репозитории.

Замените REGISTRY-URL URL-адресом реестра Maven вашего экземпляра. Если в вашем экземпляре включена изоляция поддоменов, используйте maven.HOSTNAME. Если в вашем экземпляре отключена изоляция поддоменов, используйте HOSTNAME/_registry/maven. В любом случае замените HOSTNAME на имя узла экземпляра GitHub Enterprise Server.

Замените USERNAME именем пользователя GitHub, TOKEN — personal access token, REPOSITORY — именем репозитория, содержащего пакет, который требуется опубликовать, и OWNER — именем учетной записи пользователя или организации в GitHub, которой принадлежит репозиторий. Поскольку прописные буквы не поддерживаются, необходимо использовать строчные буквы для указания владельца репозитория, даже если имя пользователя или организации GitHub содержит прописные буквы.

Примечание. GitHub Packages поддерживает версии SNAPSHOT средства Apache Maven. Чтобы использовать репозиторий GitHub Packages для скачивания артефактов SNAPSHOT, включите SNAPSHOTS в POM используемого проекта или своем файле ~/.m2/settings.xml. Пример см. в статье Настройка Apache Maven для использования с GitHub Packages.

Пример использования Gradle Groovy для одного пакета в репозитории

plugins {
    id("maven-publish")
}
publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://REGISTRY-URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        gpr(MavenPublication) {
            from(components.java)
        }
    }
}

Пример использования Gradle Groovy для нескольких пакетов в том же репозитории

plugins {
    id("maven-publish") apply false
}
subprojects {
    apply plugin: "maven-publish"
    publishing {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://REGISTRY-URL/OWNER/REPOSITORY")
                credentials {
                    username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                    password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
                }
            }
        }
        publications {
            gpr(MavenPublication) {
                from(components.java)
            }
        }
    }
}

Пример использования Kotlin DSL для одного пакета в том же репозитории

plugins {
    `maven-publish`
}
publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://REGISTRY-URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        register<MavenPublication>("gpr") {
            from(components["java"])
        }
    }
}

Пример использования Kotlin DSL для нескольких пакетов в том же репозитории

plugins {
    `maven-publish` apply false
}
subprojects {
    apply(plugin = "maven-publish")
    configure<PublishingExtension> {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://REGISTRY-URL/OWNER/REPOSITORY")
                credentials {
                    username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                    password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
                }
            }
        }
        publications {
            register<MavenPublication>("gpr") {
                from(components["java"])
            }
        }
    }
}

Публикация пакета

По умолчанию GitHub публикует пакет в существующем репозитории с тем же именем, что и у пакета. Например, GitHub опубликует пакет под названием com.example.test в OWNER/test репозитория GitHub Packages.

После публикации пакет можно просмотреть здесь: GitHub. Дополнительные сведения см. в статье "Просмотр пакетов".

  1. Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе Проверка подлинности в GitHub Packages.

  2. После создания пакета его можно опубликовать.

    $ gradle publish

Использование опубликованного пакета

Чтобы использовать опубликованный пакет из GitHub Packages, добавьте пакет в качестве зависимости и добавьте репозиторий в свой проект. Дополнительные сведения см. в статье Объявление зависимостей в документации Gradle.

  1. Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе Проверка подлинности в GitHub Packages.

  2. Добавьте зависимости пакета в файл build.gradle (Gradle Groovy) или файл build.gradle.kts (Kotlin DSL).

    Пример использования Gradle Groovy:

    dependencies {
        implementation 'com.example:package'
    }

    Пример использования Kotlin DSL:

    dependencies {
        implementation("com.example:package")
    }
  3. Добавьте репозиторий в файл build.gradle (Gradle Groovy) или файл build.gradle.kts (Kotlin DSL).

    Пример использования Gradle Groovy:

    repositories {
        maven {
            url = uri("https://REGISTRY-URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
            }
        }
    }

    Пример использования Kotlin DSL:

    repositories {
        maven {
            url = uri("https://REGISTRY-URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }

Дополнительные материалы