Qué es un stream y un registry en Quarkus (y cómo usarlos correctamente)

Entender qué son stream y registry es esencial para saber elegir la versión correcta de Quarkus desde su CLI al momento de crear un proyecto. Estos dos elementos definen cómo se selecciona y resuelve una plataforma, tanto en Quarkus (comunitario) como en Red Hat Build of Quarkus (RHBQ).

Un buen uso del stream y registry  permite mantener tus aplicaciones actualizadas, reproducibles y alineadas con el soporte esperado. Esta guía explica cómo usar correctamente --stream y --platform-bom, y cómo configurar registries personalizados para evitar errores y ganar agilidad.


¿Qué es un stream?

En Quarkus, un stream representa una familia de versiones. Por ejemplo: 3.8 ó 3.20. Es como decir “la última versión estable dentro de esta rama”.

Cuando usas --stream (-S), Quarkus CLI selecciona automáticamente la última versión disponible de ese grupo, según el registry que tengas configurado.

Por ejemplo, este comando creará un proyecto con la versión 3.9.5 si es la última publicada del stream 3.9 comunitario.

quarkus create app com.planetexpress:api --stream=io.quarkus.platform:3.9

Un registry es un catálogo desde donde Quarkus CLI obtiene la información de las plataformas disponibles: los streams existentes, las versiones publicadas y las extensiones que incluye cada plataforma.

Una plataforma define un conjunto coherente de extensiones, herramientas y versiones de Quarkus. Puede ser comunitaria o empresarial, y se identifica por su groupId Maven, como io.quarkus.platform o com.redhat.quarkus.platform.

📦 Registry por defecto

Quarkus CLI ya viene lista para usar el registry de la versión comunitaria: io.quarkus.platform.

🔐 Registry empresarial de Red Hat

Si cuentas con la suscripción de RHBQ, para poder usar --stream necesitas hacer dos cosas: agregar manualmente su registry (registry.quarkus.redhat.com) y agregar su perfil Maven.

Crea o edita el archivo ~/.quarkus/config.yaml. Asegúrate de respetar la indentación YAML.

# ~/.quarkus/config.yaml
registries:
  - registry.quarkus.redhat.com
  - registry.quarkus.io

Para terminar de configurar el registry, deber agregar el siguiente profile y activeProfile al archivo ~/.m2/settings.xml (y si no existe el archivo, créalo con este contenido):

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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">
  <profiles>
    <!-- Repositorio Maven de Red Hat build of Quarkus -->
    <profile>
      <id>red-hat-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!-- Activa el repositorio Maven de Red Hat build of Quarkus -->
    <activeProfile>red-hat-enterprise-maven-repository</activeProfile>
  </activeProfiles>
</settings>

Verifica que el registro de RHBQ ha quedado configurado con el comando:

quarkus registry

🚨 Cuando haya múltiples registries configurados, la CLI de Quarkus los consultará en orden hasta encontrar el stream solicitado.

Si quieres asegurarte de usar Red Hat Build of Quarkus (RHBQ) con --stream, especifica el identificador completo de la plataforma y la versión LTS al crear el proyecto con Quarkus CLI agregando:

--stream=com.redhat.quarkus.platform:<versión-LTS>

¿Qué es un platform-bom?

La opción --platform-bom  (-P) permite especificar de forma manual y exacta la coordenada Maven (groupId:artifactId:version) de la plataforma que quieres usar. Es útil cuando no tienes configurado un registry o necesitas tener control absoluto sobre la versión de Quarkus.

Por ejemplo, el siguiente comando crea el proyecto con una versión exacta (3.20.0.SP1-redhat-00001) de RHBQ (com.redhat.quarkus.platform), sin depender de ningún stream o registry configurado:

quarkus create app com.planetexpress:api --platform-bom=com.redhat.quarkus.platform:quarkus-bom:3.20.0.SP1-redhat-00001

Diferencias entre --stream y --platform-bom

Ambas opciones sirven para elegir versiones de Quarkus al momento de crear un proyecto, pero funcionan de forma distinta:

OpciónQué haceUso recomendado
--streamUsa la última versión disponible de un streamCuando tenés configurado el registry
--platform-bomUsa una versión exacta del BOM (sin consultar registries)Cuando no hay registry o se necesita control absoluto

Ejemplo con --stream :

quarkus create app com.planetexpress:api --stream=io.quarkus.platform:3.24

El comando crea el proyecto con la última versión estable del stream 3.24 disponible en el registry comunitario, actualmente 3.24.5.

Ejemplo con --platform-bom :

create app com.planetexpress:api-rhbq --platform-bom=com.redhat.quarkus.platform:quarkus-bom:3.20.0.SP1-redhat-00001

El comando crea el proyecto con una versión especifica de RHBQ, ideal si no quieres depender de ningún registry externo ni configurarlo.


¿Qué pasa si no configuras el registry de RHBQ?

Si no tienes configurado registry.quarkus.redhat.com, no vas a poder usar --stream con versiones empresariales si cuentas con la suscripción de Red Hat, aunque sí podrás hacerlo usando --platform-bom. En ese caso, la única forma de generar un proyecto con RHBQ desde Quarkus CLI es especificar la coordenada exacta del BOM:

--platform-bom=com.redhat.quarkus.platform:quarkus-bom:<versión>

🚀 Consejo de Quarkiverso

Si alternas entre Quarkus comunitario y RHBQ, configura ambos registries como fue explicado antes 👆. Así, Quarkus CLI podrá elegir automáticamente según el stream, sin necesidad de cambiar comandos o editar archivos cada vez que cambies de entorno.

Esto te permite trabajar con agilidad tanto en entornos empresariales como en proyectos de desarrollo general.



🧭 Tabla comparativa final

Característica--stream--platform-bom
Requiere registry✅ Sí❌ No
FuenteRegistry preconfiguradoCoordenada directa en el BOM
Control de versiónParcial (última disponible del stream)Total (fijas la versión exacta)
Ideal paraTrabajar siempre con lo último de un streamEntornos controlados, builds reproducibles

📚 Recursos recomendados