Skip to main content

Trabalhando com o registro do Gradle

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

O GitHub Packages está disponível com GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 3.0 ou superior e o GitHub AE.. Para obter mais informações sobre como atualizar sua instância do GitHub Enterprise Server, confira "Sobre atualizações para novas versões" e consulte o Assistente de atualização para encontrar o caminho de atualização da sua versão atual.

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 obter mais informações, confira "Como configurar o suporte a pacotes para sua empresa".

Autenticar-se no GitHub Packages

Você precisa de um token de acesso para publicar, instalar e excluir pacotes.

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

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 PAT para instalar pacotes associados a outros repositórios privados (que não podem ser acessados pelo GITHUB_TOKEN).

Para obter mais informações sobre o GITHUB_TOKEN usado em fluxos de trabalho do GitHub Actions, confira "Autenticação em um fluxo de trabalho". Para obter mais informações sobre como usar o GITHUB_TOKEN com o Gradle, confira "Como publicar pacotes Java com o Gradle".

Efetuando a autenticação com um token de acesso pessoal

Você deve usar um token de acesso pessoal com os escopos apropriados para publicar e instalar pacotes no GitHub Packages. Para obter mais informações, confira "Sobre o GitHub Packages".

Autentique-se no GitHub Packages com o Gradle 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 seu token de acesso pessoal. 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 do 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. Nos dois casos, substitua HOSTNAME pelo nome do host da instância do GitHub Enterprise Server.

Substitua USERNAME pelo seu nome de usuário do GitHub, TOKEN pelo token de acesso pessoal, REPOSITORY pelo nome do repositório que contém o pacote que você deseja publicar e OWNER pelo nome da conta de usuário ou de organização no GitHub que é o proprietário do repositório. Como não é permitido usar letras maiúsculas, é preciso usar letras minúsculas no nome do proprietário do repositório, mesmo que o nome do usuário ou da organização no GitHub 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 ver um exemplo, confira "Como configurar o Apache Maven para uso com o GitHub Packages".

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, o GitHub publicará um pacote chamado com.example.test no repositório OWNER/test do GitHub Packages.

Após publicar um pacote, você poderá visualizá-lo no GitHub. Para obter mais informações, confira "Como ver pacotes".

  1. Autenticar para GitHub Packages. Para obter mais informações, 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 a partir de GitHub Packages, adicione o pacote como uma 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 obter mais informações, 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