Skip to main content

Esta versión de GitHub Enterprise se discontinuó el 2022-09-28. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener rendimiento mejorado, seguridad mejorada y nuevas características, actualice a la versión más reciente de GitHub Enterprise. Para obtener ayuda con la actualización, póngase en contacto con el soporte técnico de GitHub Enterprise.

Trabajar con el registro de Apache Maven

Puedes configurar Apache Maven para publicar paquetes para GitHub Packages y utilizar paquetes almacenados en GitHub Packages como dependencias en un proyecto Java.

GitHub Packages está disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 3.0 o superior y GitHub AE. Para obtener más información sobre cómo actualizar la instancia GitHub Enterprise Server, consulta «Acerca de las actualizaciones a nuevas versiones» y el Asistente de mejora para encontrar la ruta de actualización de la versión actual.

Nota: Este tipo de paquete podría no estar disponible para su instancia, ya que los administradores de sitio pueden habilitar o inhabilitar cada tipo de paquete compatible. Para obtener más información, consulte "Configurar la compatibilidad del ecosistema de paquetes para tu empresa".

Autenticar a GitHub Packages

You need an access token to publish, install, and delete private, internal, and public packages.

You can use a personal access token (PAT) to authenticate to GitHub Packages or the GitHub Enterprise Server API. When you create a personal access token, you can assign the token different scopes depending on your needs. For more information about packages-related scopes for a PAT, see "About permissions for GitHub Packages."

To authenticate to a GitHub Packages registry within a GitHub Actions workflow, you can use:

  • GITHUB_TOKEN to publish packages associated with the workflow repository.
  • a PAT with at least packages:read scope to install packages associated with other private repositories (which GITHUB_TOKEN can't access).

Para más información sobre el uso de GITHUB_TOKEN en flujos de trabajo de GitHub Actions, vea "Autenticación en un flujo de trabajo".

Autenticarte con un token de acceso personal

Debes utilizar un token de acceso personal con los alcances adecuados para publicar e instalar paquetes en GitHub Packages. Para más información, vea "Acerca de GitHub Packages".

Puedes autenticar en GitHub Packages con Apache Maven editando tu archivo ~/.m2/settings.xml para incluir tu token de acceso personal. Crea un nuevo archivo ~/.m2/settings.xml si no existe uno.

En la etiqueta servers, agrega una etiqueta secundaria server con id, reemplazando USERNAME por el nombre de usuario de GitHub y TOKEN por el token de acceso personal.

En la etiqueta repositories, configura un repositorio asignando el id del repositorio al id que has agregado en la etiqueta server que contiene las credenciales. Reemplaza HOSTNAME por el nombre de host de your GitHub Enterprise Server instance, y OWNER por el nombre de la cuenta de usuario o de la organización que posee el 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.

Si quieres interactuar con varios repositorios, puedes agregar cada repositorio a un elemento secundario repository independiente en la etiqueta repositories, asignando el id de cada uno a las credenciales de la etiqueta servers.

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.

Si en la instancia se ha habilitado el aislamiento de subdominios:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <activeProfiles>
    <activeProfile>github</activeProfile>
  </activeProfiles>

  <profiles>
    <profile>
      <id>github</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2</url>
        </repository>
        <repository>
          <id>github</id>
          <url>https://maven.HOSTNAME/OWNER/REPOSITORY</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

  <servers>
    <server>
      <id>github</id>
      <username>USERNAME</username>
      <password>TOKEN</password>
    </server>
  </servers>
</settings>

Si en la instancia se ha deshabilitado el aislamiento de subdominios:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <activeProfiles>
    <activeProfile>github</activeProfile>
  </activeProfiles>

  <profiles>
    <profile>
      <id>github</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2</url>
        </repository>
        <repository>
          <id>github</id>
          <url>HOSTNAME/_registry/maven/OWNER/REPOSITORY</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

  <servers>
    <server>
      <id>github</id>
      <username>USERNAME</username>
      <password>TOKEN</password>
    </server>
  </servers>
</settings>

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 un repositorio denominado OWNER/test.

Si quieres publicar varios paquetes en el mismo repositorio, puedes incluir la dirección URL del repositorio en el elemento <distributionManagement> del archivo pom.xml. GitHub coincidirá con el repositorio según ese campo. Dado que el nombre del repositorio también forma parte del elemento distributionManagement, no hay pasos adicionales para publicar varios paquetes en el mismo repositorio.

Para obtener más información sobre cómo crear un paquete, consulta la documentación de maven.apache.org.

  1. Edita el elemento distributionManagement del archivo pom.xml ubicado en el directorio del paquete, reemplazando HOSTNAME por el nombre de host de your GitHub Enterprise Server instance, OWNER por el nombre de la cuenta de usuario o de la organización que posee el repositorio y REPOSITORY por el nombre del repositorio que contiene el proyecto.

    Si tu instancia tiene habilitado el aislamiento de subdominio:

    <distributionManagement>
       <repository>
         <id>github</id>
         <name>GitHub OWNER Apache Maven Packages</name>
         <url>https://maven.HOSTNAME/OWNER/REPOSITORY</url>
       </repository>
    </distributionManagement>
    

    If your instance has subdomain isolation disabled:

    <distributionManagement>
       <repository>
         <id>github</id>
         <name>GitHub OWNER Apache Maven Packages</name>
         <url>https://HOSTNAME/_registry/maven/OWNER/REPOSITORY</url>
       </repository>
    </distributionManagement>
    
  2. Publish the package.

    $ mvn deploy

Después de que publiques un paquete, puedes verlo en GitHub. Para más información, vea "Visualización de paquetes".

Instalación de un paquete

Para instalar un paquete de Apache Maven desde GitHub Packages, edita el archivo pom.xml para incluir el paquete como una dependencia. Si quieres instalar paquetes desde más de un repositorio, agrega una etiqueta repository para cada uno. Para obtener más información sobre el uso de un archivo pom.xml en el proyecto, consulta "Introducción a POM" en la documentación de Apache Maven.

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

  2. Agrega las dependencias del paquete al elemento dependencies del archivo pom.xml del proyecto, reemplazando com.example:test por el paquete.

    <dependencies>
      <dependency>
        <groupId>com.example</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0-SNAPSHOT</version>
      </dependency>
    </dependencies>
    
  3. Instala el paquete.

    $ mvn install

Información adicional