Skip to main content

Trabajar con el registro de Gradle

Puedes configurar a Gradle para que publique paquetes en el registro de Gradle del GitHub Packages y para utilizar los paquetes almacenados en el GitHub Packages como dependencias en un proyecto de Java.

¿Quién puede utilizar esta característica?

GitHub Packages está disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud y GitHub Enterprise Server 3.0 o superior
GitHub Packages no está disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Además, las cuentas que usan planes heredados por repositorio no pueden acceder a los registros que admiten permisos granulares, ya que estas cuentas se facturan por repositorio. Para la lista de registros que admiten permisos granulares, consulta "Acerca de los permisos para los Paquetes de GitHub". Para más información, consulta "Planes de GitHub".

Autenticar a GitHub Packages

GitHub Packages solo admite la autenticación mediante un personal access token (classic). Para obtener más información, vea «Administración de tokens de acceso personal».

Necesitas un token de acceso para publicar, instalar y eliminar paquetes privados, internos y públicos.

Puedes usar un personal access token (classic) para autenticarte en GitHub Packages o en la API de GitHub. Cuando creas un personal access token (classic), puedes asignar al token diferentes ámbitos en función de tus necesidades. Para más información sobre los ámbitos relacionados con paquetes para un personal access token (classic), consulta "Acerca de los permisos para los Paquetes de GitHub".

Para autenticarte en un registro del GitHub Packages dentro de un flujo de trabajo de GitHub Actions, puedes utilizar:

  • GITHUB_TOKEN para publicar los paquetes asociados con el repositorio del flujo de trabajo.
  • Un personal access token (classic) con, al menos, ámbito de read:packages para instalar los paquetes asociados con otros repositorios privados (a los cuales no puede acceder GITHUB_TOKEN).

Para más información sobre el uso de GITHUB_TOKEN en flujos de trabajo de GitHub Actions, consulta "Autenticación automática de tokens". Para más información sobre el uso de GITHUB_TOKEN con Gradle, consulta "Publicar paquetes Java con Gradle".

Autenticación con un personal access token

Debes utilizar un personal access token (classic) con los ámbitos adecuados para publicar e instalar paquetes en GitHub Packages. Para obtener más información, vea «Introducción a los paquetes de GitHub».

Te puedes autenticar en GitHub Packages con Gradle mediante Gradle Groovy o Kotlin DSL editando el archivo build.gradle (Gradle Groovy) o build.gradle.kts (Kotlin DSL) para incluir el personal access token (classic). También puedes configurar Gradle Groovy y Kotlin DSL para que reconozcan un paquete único o múltiples paquetes en un repositorio.

Reemplaza NOMBRE_DE_USUARIO por el nombre de usuario de GitHub, TOKEN por el personal access token (classic), REPOSITORIO por el nombre del repositorio que contiene el paquete que quieras publicar y PROPIETARIO por el nombre de la cuenta personal u organización en GitHub propietaria del repositorio. Dado que las letras mayúsculas no son compatibles, debes usar minúsculas para el propietario del repositorio si el nombre de usuario o el nombre de la organización de GitHub contiene letras mayúsculas.

Nota: GitHub Packages admite las versiones SNAPSHOT de Apache Maven. A fin de usar el repositorio de GitHub Packagespara descargar artefactos de SNAPSHOT, habilite SNAPSHOTS en el POM del proyecto consumidor o en el archivo ~/.m2/settings.xml. Para ver un ejemplo, consulta "Trabajar con el registro de Apache Maven".

Ejemplo de uso de Gradle Groovy para un paquete único en un repositorio

plugins {
    id("maven-publish")
}
publishing {
    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.key") ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        gpr(MavenPublication) {
            from(components.java)
        }
    }
}

Ejemplo usando Gradle Groovy para múltiples paquetes en el mismo repositorio

plugins {
    id("maven-publish") apply false
}
subprojects {
    apply plugin: "maven-publish"
    publishing {
        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.key") ?: System.getenv("TOKEN")
                }
            }
        }
        publications {
            gpr(MavenPublication) {
                from(components.java)
            }
        }
    }
}

Ejemplo de uso de Kotlin DSL para un paquete único en el mismo repositorio

plugins {
    `maven-publish`
}
publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/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"])
        }
    }
}

Ejemplo de uso de Kotlin DSL para múltiples paquetes en el mismo repositorio

plugins {
    `maven-publish` apply false
}
subprojects {
    apply(plugin = "maven-publish")
    configure<PublishingExtension> {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://maven.pkg.github.com/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"])
            }
        }
    }
}

Publicación de un paquete

Predeterminadamente, GitHub publica el paquete en un repositorio existente con el mismo nombre que éste. Por ejemplo, GitHub publicará un paquete denominado com.example.test en el repositorio OWNER/test de GitHub Packages.

Después de que publiques un paquete, puedes verlo en GitHub. Para obtener más información, vea «Visualizar paquetes».

  1. Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".

  2. Después de crear tu paquete, puedes publicar el paquete.

     gradle publish
    

Utilizar un paquete publicado

Para utiliza run paquete publicado del GitHub Packages, agrégalo como una dependencia y luego agrega el repositorio a tu proyecto. Para más información, vea "Declaración de dependencias" en la documentación de Gradle.

  1. Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".

  2. Agregue las dependencias del paquete al archivo build.gradle (Gradle Groovy) o al archivo build.gradle.kts (Kotlin DSL).

    Ejemplo utilizando Gradle Groovy:

    dependencies {
        implementation 'com.example:package'
    }
    

    Ejemplo de uso de Kotlin DSL:

    dependencies {
        implementation("com.example:package")
    }
    
  3. Agregue el repositorio al archivo build.gradle (Gradle Groovy) o al archivo build.gradle.kts (Kotlin DSL).

    Ejemplo utilizando Gradle Groovy:

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

    Ejemplo de uso de Kotlin DSL:

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

Información adicional