Publicar paquetes Java con Maven

Puedes usar Maven para publicar paquetes Java en un registro como parte de tu flujo de trabajo de integración continua (CI).

Introducción

Esta guía te muestra cómo crear un flujo de trabajo que publique paquetes de Java en Registro del paquete de GitHub y en el Repositorio Central de Maven. Con un solo flujo de trabajo, puedes publicar los paquetes en un solo repositorio o en varios repositorios.

Prerrequisitos

Te recomendamos que tengas una comprensión básica de los archivos de flujo de trabajo y las opciones de configuración. Para obtener más información, consulta la sección "Aprende sobre GitHub Actions".

Para obtener más información acerca de la creación de un flujo de trabajo de CI para tu proyecto Java con Maven, consulta "Construir y probar Java con Maven".

También puede ser útil tener un entendimiento básico de lo siguiente:

Acerca de la configuración del paquete

Los campos groupld y artifactId del archivo pom.xml crea un identificador único para tu paquete que los registros usan para vincular tu paquete a un registro. Para obtener más información, consulta Guía para cargar artefactos en el repositorio central en la documentación de Apache Maven.

El archivo pom.xml también contiene la configuración de los repositorios de administración de distribución en los que Maven implementará los paquetes. Cada repositorio debe tener un nombre y una URL de implementación. La autenticación para estos repositorios se puede configurar en el archivo .m2/settings.xml del directorio de inicio del usuario que ejecuta Maven.

Puedes usar la acción setup-java para configurar el repositorio de implementación, así como la autenticación para ese repositorio. Para obtener más información, consulta setup-java.

Publicar paquetes en el repositorio central de Maven

Cada vez que creas un lanzamiento nuevo, puedes desencadenar un flujo de trabajo para publicar tu paquete. El flujo de trabajo en el ejemplo a continuación se ejecuta cuando el evento lanzamiento desencadena con tipo creado. El flujo de trabajo publica el paquete en el repositorio central de Maven si se pasan las pruebas de CI. Para obtener más información acerca del evento release, consulta "Eventos que activan flujos de trabajo".

En este flujo de trabajo, puedes usar la acicón setup-java. Esta acción instala la versión dada del JDK en el PATH, pero también configura un Maven settings.xml para publicar paquetes. Por defecto, el archivo de configuraciones se configurará para Registro del paquete de GitHub, pero se puede configurar para que se implemente en otro registro de paquetes, como el repositorio central de Maven. Si ya tienes un repositorio de administración de distribución configurado en pom.xml, puedes especificar que id durante la acción de invocación setup-java.

Por ejemplo, si estás desplegando en el repositorio central de Maven a través del proyecto de alojamiento OSSRH, tu pom.xml podría especificar un repositorio de administración de distribución con el id de ossrh.

xml
<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>ossrh</id>
      <name>Central Repository OSSRH</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
</project>

Con esta configuración, puedes crear un flujo de trabajo que publique tu paquete en el repositorio central de Maven especificando la administración del repositorio id para la acción setup-java. También deberás proporcionar variables de entorno que contengan el nombre de usuario y la contraseña para autenticarse en el repositorio.

En el paso de implementación, necesitarás establecer las variables de entorno para el nombre de usuario con el que te autenticaste en el repositorio y para el secreto que hayas configurado con la contraseña o el token con que autenticarse. Para obtener más información, consulta "Crear y usar secretos cifrados."

YAML
name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Maven Central Repository
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish package
        run: mvn --batch-mode deploy
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}

Este flujo de trabajo realiza los siguientes pasos:

  1. Verifica una copia del repositorio del proyecto.

  2. Configura el JDK de Java y también el archivo settings. xml de Maven para agregarle autenticación al repositorio de ossrh utilizando las variables de entorno MAVEN_USERNAME y MAVEN_PASSWORD.

  3. Ejecuta el comando mvn --batch-mode deploy para publicar en el repositorio ossrh. La variable de entorno MAVEN_USERNAME se establecerá con los contenidos de tu OSSRH_USERNAME secreto, y la variable de entorno MAVEN_PASSWORD se establecerá con los contenidos de tu OSSRH_TOKEN secreto.

    Para obtener más información acerca del uso de secretos en tu flujo de trabajo, consulta "Crear y usar secretos cifrados".

Sube paquetes al Registro del paquete de GitHub

Cada vez que creas un lanzamiento nuevo, puedes desencadenar un flujo de trabajo para publicar tu paquete. El flujo de trabajo en el ejemplo a continuación se ejecuta cuando el evento lanzamiento desencadena con tipo creado. El flujo de trabajo publica el paquete en el Registro del paquete de GitHub si se superan las pruebas de CI. Para obtener más información acerca del evento release, consulta "Eventos que activan flujos de trabajo".

En este flujo de trabajo, puedes usar la acicón setup-java. Esta acción instala la versión determinada del JDK en el PATH y configura un settings.xml de Maven para publicar el paquete en el Registro del paquete de GitHub. El settings.sml generado define la autenticación para un servidor con una id de github, utilizando la variable de entorno GITHUB_ACTOR como nombre de usuario y la variable de entorno GITHUB_TOKEN como contraseña. Se le asigna el valor del secreto especial GITHUB_TOKEN a la variable de ambiente GITHUB_TOKEN.

El secreto de GITHUB_TOKEN se configuro para un token de acceso para el repositorio cada vez que comienza un job en un flujo de trabajo. Tiene permisos de lectura y escritura para los paquetes del repositorio en donde se ejecuta el flujo de trabajo. Para obtener más información, consulta la sección "Autenticarte con el GITHUB_TOKEN".

Para un proyecto basado en Maven, puedes hacer uso de estas configuraciones creando un repositorio de distribución en tu archivo pom.xml con una id de github que apunta a tu extremo Registro del paquete de GitHub.

Por ejemplo, si tu organización se llama "octocat", y tu repositorio se llama "hello-world", la configuración de Registro del paquete de GitHub en pom.xml sería parecida al siguiente ejemplo.

xml
<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>github</id>
      <name>GitHub Packages</name>
      <url>https://maven.pkg.github.com/octocat/hello-world</url>
    </repository>
  </distributionManagement>
</project>

Con esta configuración, puedes crear un flujo de trabajo que publique tu paquete en Registro del paquete de GitHub haciendo uso del settings.xml generado automáticamente.

YAML
name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Publish package
        run: mvn --batch-mode deploy
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Este flujo de trabajo realiza los siguientes pasos:

  1. Verifica una copia del repositorio del proyecto.

  2. Configura el JDK de Java y configura automáticamente el archivo settings.xml de Maven para agregar autenticación para que el repositorio github de Maven utilice la variable de entorno GITHUB_TOKEN.

  3. Ejecuta el comando mvn --batch-mode deploy para publicar a Registro del paquete de GitHub. La variable de ambiente GITHUB_TOKEN se configurará con el contenido del secreto GITHUB_TOKEN.

    Para obtener más información acerca del uso de secretos en tu flujo de trabajo, consulta "Crear y usar secretos cifrados".

Publicar paquetes en el repositorio central de Maven y Registro del paquete de GitHub

Puedes publicar tus paquetes en el repositorio central de Maven y en el Registro del paquete de GitHub usando la acción setup-java para cada registro.

Asegúrate de que tu archivo pom.xml incluya un repositorio de administración de distribución para tu repositorio de GitHub y para tu proveedor de repositorios centrales de Maven. Por ejemplo, si implementas el repositorio central a través del proyecto de alojamiento de OSSRH, es posible que desees especificarlo en un repositorio de administración de distribución con la id establecida en ossrh, y que desees especificar el Registro del paquete de GitHub en un repositorio de administración de distribución con la id establecida en github.

YAML
name: Publish package to the Maven Central Repository and GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java for publishing to Maven Central Repository
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish to the Maven Central Repository
        run: mvn --batch-mode deploy
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
      - name: Set up Java for publishing to GitHub Packages
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Publish to GitHub Packages
        run: mvn --batch-mode deploy
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Este flujo de trabajo llama a la acción setup-java dos veces. Cada vez que la acción setup-java se ejecuta, sobrescribe el archivo settings.xml de Maven para publicar paquetes. Para la autenticación en el repositorio, el archivo settings.xml hace referencia a la id del repositorio de administración de distribución y al nombre de usuario y contraseña.

Este flujo de trabajo realiza los siguientes pasos:

  1. Verifica una copia del repositorio del proyecto.

  2. Llama al setup-java la primera vez. Esto configura el archivo settings.xml de Maven para el repositorio ossrh y establece las opciones de autenticación en las variables de entorno que se definen en el siguiente paso.

  3. Ejecuta el comando mvn --batch-mode deploy para publicar en el repositorio ossrh. La variable de entorno MAVEN_USERNAME se establecerá con los contenidos de tu OSSRH_USERNAME secreto, y la variable de entorno MAVEN_PASSWORD se establecerá con los contenidos de tu OSSRH_TOKEN secreto.

  4. Llama al setup-java la segunda vez. Esto configura automáticamente el archivo settings.xml de Maven para el Registro del paquete de GitHub.

  5. Ejecuta el comando mvn --batch-mode deploy para publicar a Registro del paquete de GitHub. La variable de ambiente GITHUB_TOKEN se configurará con el contenido del secreto GITHUB_TOKEN.

    Para obtener más información acerca del uso de secretos en tu flujo de trabajo, consulta "Crear y usar secretos cifrados".

¿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.