The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Volver a medir una aplicación de Quarkus

¿Qué es el proceso de aumento?

La configuración de la aplicación Quarkus puede incluir dos tipos de opciones de configuración:

  • Opciones de tiempo de construcción, manejadas durante el tiempo de construcción de la aplicación;

  • Opciones de tiempo de ejecución, que pueden ajustarse después de la construcción de la aplicación pero antes de su lanzamiento.

El aumento es una fase del proceso de construcción de una aplicación durante la cual el código de bytes de la aplicación es optimizado de acuerdo a la configuración del tiempo de construcción de la aplicación. Los pasos de inicialización que solían ocurrir cuando se desplegaba un archivo EAR en un servidor Jakarta EE, como el análisis de la configuración estática, la creación de instancias de proxy, etc., ocurren ahora en el momento del aumento. Los beans CDI añadidos después de la ampliación no funcionarán (debido a la falta de clases proxy), así como las propiedades de tiempo de construcción (por ejemplo, quarkus.datasource.db-kind) cambiadas después de la ampliación serán ignoradas. Las propiedades de tiempo de compilación están marcadas con un icono de candado () en la lista de todas las opciones de configuración. No importa si se utilizan perfiles o cualquier otra forma de anular las propiedades. Las propiedades de tiempo de construcción que estaban activas durante el aumento se incorporan a la construcción.

La re-aumentación es el proceso de recrear la salida de aumento para una configuración de tiempo de construcción diferente

¿Cuándo es útil la re-aumentación?

La re-aumentación es útil en caso de que los usuarios de su aplicación quieran ser capaces de cambiar algunas de sus propiedades de tiempo de construcción. Por ejemplo, cambiar el controlador de la base de datos o activar o desactivar características (por ejemplo, OpenTracing o Config Consul). Si sólo hay dos o tres propiedades de tiempo de compilación que dependen del entorno del usuario, puede considerar proporcionar compilaciones alternativas de la aplicación. Sin embargo, en el caso de que haya más propiedades de este tipo, puede preferir enviar un tarro mutable en su lugar y dejar que sus usuarios vuelvan a calibrar la aplicación para su entorno. Tenga en cuenta que no podrá utilizar imágenes nativas con el tipo de paquete mutable-jar. Piensa en las consecuencias y en qué otras opciones tienes.

No es una buena idea hacer la re-aumentación en tiempo de ejecución, a menos que eches de menos los buenos tiempos en los que arrancar un servidor tardaba varios minutos y podías disfrutar de una taza de café hasta que estaba listo.

Cómo volver a aumentar una aplicación de Quarkus

Para ejecutar los pasos de aumento se necesitan los JARs de despliegue de las extensiones de Quarkus utilizadas. Estos JARs sólo están presentes en la distribución mutable-jar. Esto significa que necesitas construir tu aplicación con quarkus.package.type=mutable-jar. La distribución mutable-jar es la misma que la distribución fast-jar, excepto por la carpeta adicional quarkus-app/lib/deployment que contiene los JARs de despliegue y sus dependencias (y alguna configuración del cargador de clases).

By default, you’ll get a warning if a build time property has been changed at runtime. You may set the quarkus.configuration.build-time-mismatch-at-runtime=fail property to make sure your application does not start up if there is a mismatch. However, as of this writing changing quarkus.datasource.db-kind at runtime did neither fail nor produce a warning but was silently ignored.

1. Construya su aplicación como mutable-jar

mvn clean install -Dquarkus.package.type=mutable-jar

2. Vuelva a calibrar su aplicación con una configuración de tiempo de compilación diferente

Para volver a aumentar su aplicación Quarkus con diferentes propiedades de tiempo de compilación, inicie la aplicación con la configuración deseada más la propiedad del sistema quarkus.launch.rebuild establecida en true.

El siguiente ejemplo cambia el quarkus.datasource.db-kind por mysql. Para que esto funcione el mysql-extension debe haber sido incluido en la compilación. La ampliación sólo puede utilizar las extensiones que estaban presentes en el momento de la compilación.

java -jar -Dquarkus.launch.rebuild=true -Dquarkus.datasource.db-kind=mysql target/quarkus-app/quarkus-run.jar
No importa si se utilizan propiedades del sistema, variables de entorno, perfiles o un archivo de configuración externo. La configuración actual se utilizará para el aumento (el contenido de quarkus-app/quarkus se sustituirá por la nueva salida de aumento). La línea de comando anterior no lanzará la aplicación. Quarkus saldrá inmediatamente después de que la aplicación haya sido re-aumentada.

3. Opcional: Eliminar la carpeta de despliegues

Puedes eliminar el directorio quarkus-app/lib/deployment para ahorrar algo de espacio en tu distribución ZIP o imagen Docker (recuerda utilizar una construcción Docker multietapa para evitar capas innecesarias). Después de eliminar el directorio deployment, obviamente ya no es posible volver a aumentar la aplicación.