Pregunta

Tengo una aplicación de gran tamaño (~50 módulos) con una estructura similar a la siguiente:

  • Aplicación
    • Los módulos de comunicación
      • Color del módulo de comunicación
      • SSN módulo de comunicación
      • etc.módulo de comunicación
    • Router módulo
    • Los módulos de servicio
      • La votación módulo de servicio
        • Interfaz Web submódulo para la votación
        • Voto colector submódulo para la votación
        • etc.para la votación
      • Prueba del módulo de servicio
      • etc.módulo

Me gustaría importar que la aplicación de Maven y la Subversión.Después de investigar un poco he encontrado que dos de los enfoques prácticos que existe para ello.

Uno está usando una estructura de árbol como la anterior.La desventaja de esta estructura es que se necesita una tonelada de ajustes/hacks para conseguir el multi-módulo de trabajo de informes bien con Maven.Otra desventaja es que, en la Subversión de la norma tronco/tags/ramas enfoque añade aún más complejidad al repositorio.

El otro método utiliza una estructura plana, donde hay sólo uno de los padres del proyecto y todos los módulos, submódulos y partes-de-la-submódulos son secundarios directos del proyecto principal.Este enfoque funciona bien para la presentación de informes y es más fácil en la Subversión, sin embargo siento que voy a perder un poco de la estructura de esta manera.

Que camino elegir en el largo plazo y por qué?

¿Fue útil?

Solución

Tenemos una largish aplicación (160+ bundles OSGi donde cada paquete es un Maven módulo) y la lección que hemos aprendido, y seguir aprendiendo, es que de plano es mejor.El problema con la codificación semántica en la jerarquía, es que se pierde flexibilidad.Un módulo es de 100% dice que la "comunicación" hoy puede ser parte de "servicio" el día de mañana y, a continuación, tendrá que estar moviendo las cosas en su repositorio y que va a romper todo tipo de scripts, documentación, referencias, etc.

Así que yo recomendaría una estructura plana y para codificar la semántica en otro lugar (digamos, por ejemplo, un IDE o área de trabajo de documentación).

Yo he respondido a una pregunta acerca de la versión de control de diseño en detalle con ejemplos en otra pregunta, puede ser relevante para su situación.

Otros consejos

Creo que es mejor que aplanar la estructura de directorios.Tal vez usted quiere venir con una convención de nomenclatura para los directorios, que casi se muy bien cuando la visualización de todos los proyectos, pero en última instancia, no creo que todos los de ese extra de jerarquía es necesaria.

Asumiendo que usted está utilizando Eclipse como IDE de todos los proyectos se va a acabar en una lista plana una vez que usted importación de ellos de todos modos, así que realmente no se gana nada adicionales subdirectorios.Que además el hecho de que la configuración es mucho más sencilla, sin todos los extras de la jerarquía hace que la elección bastante claro en mi mente.

También puede ser que desee considerar la posibilidad de combinar algunos de los módulos.Yo no sé nada acerca de la aplicación o en el dominio, pero parece que muchos de los de la hoja a nivel de los módulos podría ser más adecuado, como acaba de paquetes o conjuntos de paquetes dentro de otro de nivel superior del módulo.Yo estoy a favor de mantener los frascos cohesivo, pero puede ser tomado demasiado a veces.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top