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.

  • 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.xml con 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.
  • 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.
  • ¿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 SNAPSHOT inicial?
  • mvn clean package corre solo: compila, empaqueta y deja el artefacto en target/; ningún .class suelto 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.
  • 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).
  • clase/daw/prog/2eval/practicas/p8.txt
  • Última modificación: 2026/10/29 10:06
  • por cesguiro