Skip to main content

Trabalhando com o repositório do Gradle

Você pode configurar o Gradle para publicar pacotes no GitHub Packages registro Gradle e usar pacotes armazenados GitHub Packages como dependências em um projeto Java.

Observação

Talvez esse tipo de pacote não esteja disponível para sua instância, pois os administradores do site podem habilitar ou desabilitar cada tipo de pacote compatível. Para saber mais, confira Configuração do suporte ao ecossistema de pacotes para sua empresa.

Autenticando para GitHub Packages

Observação

O GitHub Packages dá suporte apenas à autenticação que usa um personal access token (classic). Para saber mais, confira Gerenciar seus tokens de acesso pessoal.

Você precisa de um token de acesso para publicar, instalar e excluir pacotes privados, públicos e internos.

Você pode usar um personal access token (classic) para se autenticar no GitHub Packages ou na API do GitHub. Ao criar um personal access token (classic), você pode atribuir diferentes escopos de token, dependendo da sua necessidade. Para obter mais informações sobre escopos relacionados a pacotes para personal access token (classic), confira Sobre permissões para o GitHub Packages.

Para efetuar a autenticação em um registro do GitHub Packages dentro de um fluxo de trabalho de GitHub Actions, você pode utilizar:

  • GITHUB_TOKEN para publicar pacotes associados ao repositório do fluxo de trabalho.
  • Um personal access token (classic) com pelo menos escopo read:packages para instalar pacotes associados a outros repositórios privados (GITHUB_TOKEN pode ser usado se o repositório receber acesso de leitura ao pacote. Confira, Configurando o controle de acesso e visibilidade de um pacote).

Para obter mais informações sobre o GITHUB_TOKEN usado em fluxos de trabalho do GitHub Actions, confira Usar GITHUB_TOKEN para autenticação em fluxos de trabalho. Para obter mais informações sobre como usar GITHUB_TOKEN com o Gradle, consulte Publicando pacotes Java com o Gradle.

Autenticando com um personal access token

Você precisa usar um personal access token (classic) com os escopos apropriados para publicar e instalar pacotes no GitHub Packages. Para saber mais, confira Introdução ao GitHub Packages.

Você pode se autenticar em GitHub Packages usando o Gradle Groovy ou o Kotlin DSL, editando o arquivo build.gradle (Gradle Groovy) ou o arquivo build.gradle.kts (Kotlin DSL) para incluir suas personal access token (classic). Também é possível configurar o Gradle Groovy e o Kotlin DSL para reconhecer um único pacote ou vários pacotes em um repositório.

Substitua REGISTRY_URL pela URL do registro Maven da sua instância. Se a sua instância tem o isolamento de subdomínio habilitado, use maven.HOSTNAME. Se a sua instância tem o isolamento de subdomínio desabilitado, use HOSTNAME/_registry/maven. Em ambos os casos, substitua HOSTNAME pelo nome do host da instância GitHub Enterprise Server .

Substitua USERNAME por seu GitHub nome de usuário, TOKEN por seu personal access token (classic)REPOSITÓRIO pelo nome do repositório que contém o pacote que você deseja publicar e OWNER pelo nome da conta pessoal ou organização que GitHub possui o repositório. Como não há suporte para letras maiúsculas, você deve usar letras minúsculas para o proprietário do repositório, mesmo que o nome do GitHub usuário ou da organização contenha letras maiúsculas.

Observação

O GitHub Packages dá suporte às versões de SNAPSHOT do Apache Maven. Para usar o repositório do GitHub Packages para baixar artefatos SNAPSHOT, habilite SNAPSHOTS no POM do projeto de consumo ou no arquivo ~/.m2/settings.xml. Para obter um exemplo, consulte Trabalhando com o repositório do Apache Maven.

Exemplo de uso do Gradle Groovy para um único pacote em um repositório

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

Exemplo de uso do Gradle Groovy para vários pacotes no mesmo repositório

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

Exemplo de uso do Kotlin DSL para um único pacote no mesmo repositório

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

Exemplo de uso do Kotlin DSL para vários pacotes no mesmo repositório

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

Publicando um pacote

Por padrão, o GitHub publica o pacote em um repositório existente com o mesmo nome do pacote. Por exemplo, GitHub publicará um pacote nomeado com.example.test no OWNER/testGitHub Packages repositório.

Após publicar um pacote, você poderá visualizá-lo no GitHub. Para saber mais, confira Visualizar pacotes.

  1. Autenticar para GitHub Packages. Para saber mais, confira Autenticação no GitHub Packages.

  2. Depois de criar seu pacote, você poderá publicá-lo.

     gradle publish
    

Usando um pacote publicado

Para usar um pacote publicado de GitHub Packages, adicione o pacote como dependência e adicione o repositório ao seu projeto. Para obter mais informações, confira Como declarar dependências na documentação do Gradle.

  1. Autenticar para GitHub Packages. Para saber mais, confira Autenticação no GitHub Packages.

  2. Adicione as dependências do pacote ao arquivo build.gradle (Gradle Groovy) ou ao arquivo build.gradle.kts (Kotlin DSL).

    Exemplo do uso do Gradle Groovy:

    dependencies {
        implementation 'com.example:package'
    }
    

    Exemplo de uso do Kotlin DSL:

    dependencies {
        implementation("com.example:package")
    }
    
  3. Adicione o repositório ao arquivo build.gradle (Gradle Groovy) ou ao arquivo build.gradle.kts (Kotlin DSL).

    Exemplo do uso do 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")
            }
       }
    }
    

    Exemplo de uso do 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")
            }
        }
    }
    

Leitura adicional