Trabajar con el registro de Apache Maven

Puedes configurar Apache Maven para publicar paquetes para Registro del paquete de GitHub y utilizar paquetes almacenados en Registro del paquete de GitHub como dependencias en un proyecto Java.

el Registro del paquete de GitHub se encuentra disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, Nube de GitHub Enterprise, GitHub Enterprise Server, y GitHub AE.

Nota: Cuando instalas o publicas una imagen de docker, Registro del paquete de GitHub no es compatible con capas externas, tales como imágenes de Windows.

Autenticarte en Registro del paquete de GitHub

Necesitas de un token de acceso para publicar, instalar, y borrar paquetes en Registro del paquete de GitHub.

Puees utilizar un token de acceso personal (PAT) para autenticarte en el Registro del paquete de GitHub o en la API de GitHub. Cuando creas un token de acceso personal, puedes asignar al token diferentes ámbitos en función de tus necesidades. Para obtener más información sobre los alcances relacionados con los paquetes para un PAT, consulta la sección "Acerca de los permisos para los Paquetes de GitHub".

Para autenticarte en un registro del Registro del paquete de GitHub 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 PAT para instalar los paquetes asociados con otros repositorios privados (a los cuales no puede acceder el GITHUB_TOKEN).

Para obtener más información sobre el GITHUB_TOKEN que se utiliza en los flujos de trabajo de GitHub Actions, consulta la sección "Autenticarse 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 Registro del paquete de GitHub. Para obtener más información, consulta "Acerca de Registro del paquete de GitHub".

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

En la etiqueta servidores, agrega una etiqueta servidor hijo con una Id, reemplazando USERNAME con tu nombre de usuario GitHub y Token con tu token de acceso personal.

En la etiqueta repositorios, configura un repositorio al mapear el Id del repositorio a la Id que agregaste en la etiqueta servidor que contiene tus credenciales. Reemplaza a HOSTNAME con el nombre de host de tu instancia de GitHub Enterprise Server y a OWNER con el nombre de la cuenta de usuario u organización a la que pertenece 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 deseas interactuar con múltiples repositorios, puedes agregar cada repositorio para separar hijos del repositorio en la etiqueta repositorios, asignando la Id de cada una a las credenciales en la etiqueta servidores.

Registro del paquete de GitHub es compatible con versiones SNAPSHOT de Apache Maven. Para utilizar el repositorio del Registro del paquete de GitHub para descargar artefactos de SNAPSHOT, habilita las SNAPSHOTS en el POM del proyecto consumidor en tu archivo ~/.m2/settings.xml.

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

<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/*</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

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

Por ejemplo, los proyectos OctodogApp y OctocatApp publicarán en el mismo repositorio:

<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/*</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

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

Publicar 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 llamado OWNER/test.

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

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

  1. Edita el elemento distributionManagement del archivo pom.xml que se ubica en tu directorio de paquete, reemplazando HOSTNAME con el nombre del host de tu instancia de GitHub Enterprise Server, OWNER con el nombre de la cuenta organizacional o de usuario a la que pertenece el repositorio y REPOSITORY con el nombre del repositorio que contiene tu 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. Publicar el paquete.

    $ mvn deploy

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

Instalar un paquete

Para instalar un paquete de Apache Maven desde Registro del paquete de GitHub, edita el POM. XML archivo para incluir el paquete como una dependencia. Si deseas instalar paquetes desde más de un repositorio, agrega una etiqueta repositorio para cada uno. Para obtener más información acerca del uso de un archivo pom.xml en tu proyecto, consulta "Introducción al POM"en la documentación de Apache Maven.

  1. Autentícate en Registro del paquete de GitHub. Para obtener más información, consulta "Autenticar a Registro del paquete de GitHub."

  2. Agrega las dependencias del paquete al elemento dependencias del archivo pom.xml de tu proyecto, reemplazando com.example:test con tu paquete.

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

    $ mvn install

Leer más

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.