Implementación del caso práctico SmartLife. El alcance y las reglas de negocio del dominio siguen el enunciado oficial:
[DDSI UTN BA] SmartLife — Caso práctico (Google Docs)
El código de este repositorio está pensado para respetar ese enunciado (entidades, flujos y responsabilidades que allí se definen).
- JDK 21
- Maven 3.9+
- Docker (opcional, solo para construir y ejecutar contenedores)
smartlife/
├── pom.xml # POM padre: versiones y dependencyManagement
├── common-lib/ # Librería compartida (JAR), disponible en el reactor
└── sales-service/ # Servicio de ventas — puerto 8082 (ver application.yaml)
common-lib forma parte del reactor Maven; los builds Docker usan la raíz como contexto para resolver el POM padre y los módulos (-pl sales-service -am).
| Tecnología | Versión |
|---|---|
| Java | 21 |
| Spring Boot | 4.0.5 |
| Spring Cloud BOM | 2025.1.1 |
| Lombok | 1.18.42 |
| Maven | 3.9+ |
El BOM de Spring Cloud está declarado en el POM padre para que los módulos puedan incorporar dependencias de Spring Cloud sin fijar versión en cada uno.
Todos los comandos se ejecutan desde la raíz del proyecto.
mvn clean installEsto construye common-lib y luego sales-service según el orden del reactor.
mvn spring-boot:run -pl sales-serviceEl puerto por defecto está definido en sales-service/src/main/resources/application.yaml (8082).
El proyecto es multi-módulo Maven. El contexto de construcción debe ser la raíz del repositorio; si se limita a la carpeta del servicio, Maven no encontrará el POM padre ni el resto del reactor.
Desde la raíz del proyecto, usando el Dockerfile del servicio con -f y contexto .:
docker build -t sales-service-img -f sales-service/Dockerfile .Ajustá el mapeo de puertos al que exponga la aplicación dentro del contenedor (en application.yaml está 8082):
docker run -p 8082:8082 sales-service-imgEl Dockerfile define ARG SERVICE_NAME (por defecto sales-service). Solo hace falta sobreescribirlo si reutilizás el mismo patrón de build para otro módulo:
docker build --build-arg SERVICE_NAME=otro-service -f otro-service/Dockerfile .sales-service concentra el dominio de ventas alineado al enunciado SmartLife (comercio, productos, ventas, impuestos, observadores, etc.). common-lib está preparada para código compartido entre servicios a medida que el trabajo práctico lo requiera.