Gestión Avanzada de Proyectos Java: Comandos Maven, Testing de Rendimiento y CI/CD
Clasificado en Informática
Escrito el en
español con un tamaño de 8,01 KB
Comandos Esenciales de Maven y Configuración de Integración Continua
a) Identificación y Propósito de Comandos Maven
A continuación, se identifican los comandos Maven esenciales y se explica su propósito dentro del ciclo de vida del proyecto:
mvn clean compile: Sirve primero para limpiar los archivos del directorio principal (generalmente el directoriotarget), que se han creado debido a previas compilaciones, y, una vez limpio, compilar el proyecto.mvn datanucleus:schema-create: Se utiliza para crear un esquema en la base de datos, basándose en las anotaciones de persistencia (JDO - Java Data Objects o JPA - Java Persistence API) definidas en el código.mvn jetty:run: Se emplea para iniciar el servidor web Jetty, permitiendo la ejecución y prueba de la aplicación.mvn exec:java -Pclient: Se utiliza para iniciar la aplicación cliente, generalmente ejecutando una clase principal específica.mvn test: Se usa para lanzar la ejecución de las pruebas unitarias del proyecto.mvn doxygen:report: Se utiliza para generar la documentación del código fuente mediante la herramienta Doxygen.
b) Fichero de Configuración y Disciplina de Testing
Este fichero de configuración se asociaría a la disciplina de Integración Continua (CI), específicamente implementada mediante GitHub Actions.
Función del Fichero: Es un fichero de configuración para GitHub Actions (generalmente un archivo YAML), por lo que su función es definir un flujo de trabajo automatizado (workflow) para compilar, testear y desplegar un proyecto Maven ante eventos específicos (como un push o una pull request).
Anotaciones Clave para Testing
Las siguientes anotaciones son fundamentales en el contexto de las pruebas unitarias y de rendimiento:
@Test: Esta es una anotación estándar de JUnit que indica que el método que la sigue es un método de prueba que debe ser ejecutado por el framework de pruebas.@PerfTest (invocations = 1000, threads = 20): Esta anotación se utiliza para indicar que la prueba es una prueba de rendimiento. El parámetroinvocationsindica que el método debe ejecutarse 1000 veces, ythreadsindica que se ejecuta en 20 hilos simultáneamente en paralelo.@Required(max = 1200, average = 250): Esta anotación se usa para establecer requisitos de rendimiento obligatorios para la prueba.Maxindica el tiempo máximo permitido (en milisegundos) para cualquier invocación individual, yaverageindica que el tiempo medio de todas las invocaciones tiene que ser como máximo 250 ms.
Conceptos Fundamentales del Ciclo de Vida de Maven
MAVEN: Fases de Ejecución y Configuración de Dependencias
El fichero de configuración XML donde se configuran las dependencias es el pom.xml (Project Object Model). Los atributos principales requeridos para cada dependencia son:
<groupId>: Identificador único del grupo o proyecto al que pertenece la dependencia.<artifactId>: Nombre del artefacto (librería) dentro del grupo.<version>: Versión específica del artefacto a utilizar.
A continuación, se describen los conceptos clave relacionados con el proceso de build de Maven, que se activan al ejecutar comandos como mvn package:
-
Build (Construcción):
El proceso de build en Maven es la secuencia de pasos que se ejecutan para convertir el código fuente en un artefacto ejecutable. Este proceso se compone de varias fases (como validate, compile, test, package, install, deploy), cada una con un propósito específico.
-
Plugins:
Los plugins son herramientas que extienden las funcionalidades de Maven, permitiendo realizar tareas específicas durante el proceso de build. Cada plugin se define por un conjunto de objetivos (goals) que representan las acciones que puede realizar (ej. compilar código Java, ejecutar pruebas unitarias o generar informes de cobertura).
-
Profiles (Perfiles):
Los profiles son conjuntos de configuraciones que permiten adaptar el proceso de build a diferentes entornos o situaciones (ej. desarrollo, pruebas, producción). Un perfil puede definir valores para propiedades de Maven, plugins o dependencias. Los perfiles se activan por diferentes condiciones, como la presencia de determinadas propiedades o la ejecución desde un entorno específico.
-
Artifact (Artefacto):
El artefacto es el producto final del proceso de build. Es un archivo que contiene el código compilado, empaquetado y otros recursos necesarios para ejecutar la aplicación. Los tipos de artefacto más comunes son:
- JAR (Java Archive): Un archivo que contiene código Java compilado y recursos.
- WAR (Web Application Archive): Un archivo que contiene una aplicación web Java empaquetada.
- EAR (Enterprise Application Archive): Un archivo que contiene una aplicación Java empresarial empaquetada.
Tecnologías y Herramientas del Proyecto
A continuación, se listan las tecnologías y herramientas utilizadas en el proyecto, junto con su función principal:
| Tecnología | Función Principal | Tipo de Testing Asociado |
|---|---|---|
| Spring Boot | Framework para la creación rápida de aplicaciones Java empresariales. | — |
| Maven | Herramienta de gestión de proyectos y dependencias, facilitando la gestión de librerías de manera sencilla. | — |
| Jacoco | Generación de informes de cobertura de código de los tests. | Cobertura |
| Doxygen | Generación de documentación del código fuente. | — |
| Mockito | Framework para simular objetos de otras clases (mocks), esencialmente usado en los tests unitarios. | Unitario |
| GitHub Actions | Plataforma de Integración Continua (CI) y Despliegue Continuo (CD). Sirve para probar, compilar y desplegar automáticamente. | Integración |
| JUnitPerf | Framework para la ejecución de tests de rendimiento. Determina el rendimiento de un sistema en términos de capacidad de respuesta y estabilidad bajo una carga de trabajo. | Rendimiento |
| JUnit | Framework estándar para la creación y ejecución de tests unitarios. | Unitario |
| Lombok | Librería para la automatización de código repetitivo (ej. generación automática de getters y setters). | — |
| MySQL | Sistema de gestión de base de datos relacional, que permite manejar múltiples peticiones concurrentes. | — |
| Log4j | Herramienta para la gestión y configuración de logs (registro de eventos) de la aplicación. | — |
| Surefire | Plugin de Maven responsable de la ejecución de pruebas unitarias durante la fase de test del ciclo de vida. | Unitario |