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 directorio target), 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ámetro invocations indica que el método debe ejecutarse 1000 veces, y threads indica 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. Max indica el tiempo máximo permitido (en milisegundos) para cualquier invocación individual, y average indica 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:

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

  2. 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).

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

  4. 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íaFunción PrincipalTipo de Testing Asociado
Spring BootFramework para la creación rápida de aplicaciones Java empresariales.
MavenHerramienta de gestión de proyectos y dependencias, facilitando la gestión de librerías de manera sencilla.
JacocoGeneración de informes de cobertura de código de los tests.Cobertura
DoxygenGeneración de documentación del código fuente.
MockitoFramework para simular objetos de otras clases (mocks), esencialmente usado en los tests unitarios.Unitario
GitHub ActionsPlataforma de Integración Continua (CI) y Despliegue Continuo (CD). Sirve para probar, compilar y desplegar automáticamente.Integración
JUnitPerfFramework 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
JUnitFramework estándar para la creación y ejecución de tests unitarios.Unitario
LombokLibrería para la automatización de código repetitivo (ej. generación automática de getters y setters).
MySQLSistema de gestión de base de datos relacional, que permite manejar múltiples peticiones concurrentes.
Log4jHerramienta para la gestión y configuración de logs (registro de eventos) de la aplicación.
SurefirePlugin de Maven responsable de la ejecución de pruebas unitarias durante la fase de test del ciclo de vida.Unitario

Entradas relacionadas: