Esta página explica cómo construir Fess, métodos de prueba, y cómo crear paquetes de distribución.
Visión General del Sistema de Construcción
Fess usa Maven como herramienta de construcción. Maven automatiza la gestión de dependencias, compilación, pruebas y empaquetado.
pom.xml
Este es el archivo de configuración de Maven. Se encuentra en el directorio raíz del proyecto.
Contenido de configuración principal:
Información del proyecto (groupId, artifactId, version)
Bibliotecas de dependencias
Plugins de construcción
Perfiles
Comandos Básicos de Construcción
Construcción Limpia
Elimina artefactos de construcción y luego reconstruye:
Creación de Paquetes
Crea un archivo WAR y un paquete zip de distribución:
Los artefactos se generan en el directorio target/:
Construcción Completa
Ejecuta limpieza, compilación, pruebas y empaquetado:
Descarga de Dependencias
Descarga bibliotecas de dependencias:
Descarga de Plugins de OpenSearch
Descarga OpenSearch y plugins obligatorios:
Nota
Ejecute este comando al configurar el entorno de desarrollo o al actualizar plugins.
Pruebas
Fess implementa pruebas usando JUnit.
Ejecución de Pruebas Unitarias
Ejecutar Todas las Pruebas Unitarias
Ejecutar Clase de Prueba Específica
Ejecutar Método de Prueba Específico
Ejecutar Múltiples Clases de Prueba
Omitir Pruebas
Para construir omitiendo pruebas:
Advertencia
Durante el desarrollo, no omita las pruebas, ejecútelas siempre. Antes de crear un PR, verifique que todas las pruebas pasen.
Ejecución de Pruebas de Integración
Las pruebas de integración requieren el perfil integrationTests. Se necesita un servidor Fess y OpenSearch en ejecución:
Nota
Las clases de pruebas de integración usan el patrón *Tests.java (las unitarias usan *Test.java).
Cómo Escribir Pruebas
Creación de Pruebas Unitarias
Ubicación de Clases de Prueba
Coloque las clases de prueba bajo src/test/java/. La estructura de paquetes debe ser la misma que el código principal.
Estructura Básica de Clase de Prueba
Ciclo de Vida de las Pruebas
Aserciones
Use aserciones de JUnit 5:
Cobertura de Pruebas
Mida la cobertura de pruebas con JaCoCo:
El informe se genera en target/site/jacoco/index.html.
Formateo de Código
Fess utiliza las siguientes herramientas para mantener la calidad del código.
Formateador de Código
Unificar el estilo de codificación:
Encabezados de Licencia
Agregar encabezados de licencia a los archivos fuente:
Verificaciones Previas al Commit
Ejecute ambos antes de hacer commit:
Creación de Paquetes de Distribución
Creación de Paquetes Zip
Cree un paquete zip para distribución:
Artefactos generados:
Creación de Paquetes RPM
Creación de Paquetes DEB
Perfiles
Los perfiles de Maven permiten cambiar entre tipos de prueba.
build (predeterminado)
El perfil predeterminado. Ejecuta pruebas unitarias (*Test.java):
integrationTests
Perfil para ejecutar pruebas de integración (*Tests.java):
CI/CD
Fess usa GitHub Actions para ejecutar CI/CD.
GitHub Actions
Los archivos de configuración están en el directorio .github/workflows/.
Verificaciones ejecutadas automáticamente:
Construcción
Pruebas unitarias
Creación de paquetes
Verificación de CI Local
Antes de crear un PR, puede ejecutar las mismas verificaciones que CI localmente:
Solución de Problemas
Errores de Construcción
Error: Falla en descarga de dependencias
Error: Memoria insuficiente
Error: Versión antigua de Java
Use Java 21 o posterior:
Errores de Prueba
Las pruebas agotan el tiempo de espera
Extender tiempo de espera de pruebas:
OpenSearch no se inicia
Verifique el puerto y cámbielo si está en uso:
Problemas de Dependencias
Conflictos de dependencias
Verifique árbol de dependencias:
Excluir dependencia específica:
Mejores Prácticas de Construcción
Construcción Limpia Regular
Ejecute construcción limpia regularmente para evitar problemas de caché de construcción:
Ejecución de Pruebas
Ejecute siempre las pruebas antes de hacer commit:
Formateo de Código
Ejecute el formateo de código antes de crear un PR:
Actualización de Dependencias
Actualice las dependencias regularmente:
Uso de Caché de Construcción
Use caché de Maven para reducir tiempo de construcción:
Referencia de Comandos Maven
Comandos Comúnmente Usados
Próximos Pasos
Una vez que comprenda los métodos de construcción y prueba, consulte los siguientes documentos:
Flujo de Trabajo de Desarrollo - Flujo de trabajo de desarrollo
Guía de Contribución - Directrices de contribución
Arquitectura y Estructura del Código - Comprensión del código base