07 - La Forja: proyecto profesional
Todas las clases viven en el paquete por defecto, el fichero de configuración se parsea a mano y compilar la aplicación de otro compañero depende de dónde tenga colgado cada .class. El paso aplica el tema: paquetes e importaciones, librerías externas y Apache Maven.
1. Qué se pide
- El proyecto se organiza en paquetes con un paquete base propio: cada clase en el paquete por su responsabilidad, y las importaciones explicitando qué depende de qué — el compilador será el juez de que la dependencia se vea.
- La aplicación se convierte en un proyecto Maven: estructura estándar,
pom.xmlcon las coordenadas del proyecto y su ciclo de vida. Se construye con Maven, no con botones del IDE. El resultado: un artefacto con nombre y versión, listo para compartir. - El fichero de configuración pasa de propiedades a JSON, parseado con una librería externa gestionada por Maven (en clase: Gson). El parseo a mano de clave a clave desaparece: el JSON se mapea directamente a una clase del proyecto.
- La lectura del fichero mantiene la protección del paso 05 (fichero ausente, JSON con claves imposibles…), ahora con las excepciones de la librería además de las del fichero.
- Todas las pruebas anteriores siguen pasando — ahora, sin “paquete por defecto” en ningún sitio.
2. Con qué
- Todo lo del tema: paquetes e importaciones, el classpath (entenderlo permite resolverlo a mano, y por eso Maven conviene), el
pom.xml(coordenadas, propiedades, dependencias, repositorios) y el ciclo de vida de Maven (compile,test,package…). - La dependencia de Gson se añade declarándola, sin descargar JAR a mano ni pelear con el classpath — y fijando una versión exacta de la librería en el
pom.xml.
3. Decisiones tuyas
- ¿Cómo se llama el paquete base y en qué paquetes reparte las clases? Aún no hay capas (eso será el 08), pero separa ya lo que como mínimo no va junto: lo que arranca el programa, lo que modela el gremio y lo que lee la configuración.
- ¿Qué forma toma el JSON de configuración? Piensa en las claves del paso 05, no copies: re-plantéalo como objeto con tipos.
- ¿El objeto de configuración queda genérico o ajustado a La Forja? ¿Y quién hace las comprobaciones de los valores: el parser o la propia clase?
- ¿De qué groupId/artifactId/version monta el proyecto? ¿Y qué significado le das a un
SNAPSHOTinicial?
4. Comprobación
mvn clean packagecorre solo: compila, empaqueta y deja el artefacto entarget/; ningún.classsuelto por el proyecto.- En cualquiera de las clases puede verse, por sus importaciones, de qué otras depende; el compilador se queja si el reparto por paquetes se trastoca.
- El fichero de configuración en JSON carga y los valores llegan tipados (comprueba el límite de plazas y un bono de clase).
- Un JSON con una clave con formato imposible falla con la excepción concreta; el fichero ausente avisa como en el paso 05.
- Un compañero descarga tu artefacto (o tu repositorio) y lo construye con Maven sin tu ayuda: esa es la prueba de oro.
- Las pruebas de los pasos anteriores pasan enteras.
5. Pendientes
- La consola llama directamente a las colecciones y a las reglas de negocio: sin separación de responsabilidades → arquitectura por capas (08).
- El estado del gremio sigue viviendo en variables
static→ objetos propios de cada capa (08).