Pregunta

¿Cuáles son las mejores prácticas para los proyectos de versiones de software y multimódulos con Maven?

Quiero decir, cuando creo un proyecto de multimódicos con Maven, ¿cuál es el mejor enfoque para el verso? ¿Para usar una sola versión para todos los módulos (definidos en el proyecto superior)? ¿Para usar una versión para cada módulo (definido en el POM de cada módulo)? ¿Hay otro enfoque que me falta? ¿Cuáles son los pros y los contras de cada enfoque?

En general, ¿los diferentes módulos se lanzan juntos (posiblemente comparten el mismo número de versión)?

Gracias

¿Fue útil?

Solución

Honestamente, depende de lo que le gustaría hacer. Los proyectos multimódicos se crean por múltiples razones, una de ellas es que solo necesita implementar lo que ha cambiado en lugar de todos los módulos.

Piénselo de esta manera: si tuvo un proyecto no módulo de múltiplo y solo tuvo que cambiar una línea en la capa de servicios, debe reconstruir todo el proyecto e implementar todo el código nuevamente ... a pesar de que solo su La capa de servicios cambiará.

Con proyectos de múltiples módulos, puede regenerar su proyecto e implementar solo lo que cambió ... sus servicios. Esto reduce el riesgo y está seguro de que solo su módulo de servicios cambió.

También tiene una multitud de beneficios al usar proyectos de múltiples módulos que no estoy enumerando aquí, pero ciertamente hay un gran beneficio para no mantener sus números de versión de sus módulos sincronizados.

Cuando cree su proyecto, considere implementarlo en un repositorio que mantendrá todos los frascos compatibles juntos para compilaciones (cada compilación crea una nueva carpeta con el número de versión de POM más pariente). De esa manera, no necesita mantener la documentación sobre qué frascos son compatibles ... Todos están implementados junto con un número de compilación.

Otros consejos

Estaba buscando una solución para este problema exacto y versiones-plugin Era exactamente lo que necesitaba. No me gusta que el complemento de lanzamiento se comunique con el sistema SCM. El complemento de versiones hace justo lo que necesitamos: establece un nuevo número de versión en todos los Poms del proyecto:

mvn versions:set -DnewVersion=2.0.0

Después Puedo continuar con Commits, Tags y una construcción oficial de servidor de compilación ...

EDITAR:

El complemento de versiones depende de cómo se haya organizado un proyecto Maven MultiModule: como resultado, a menudo no actualiza todos los archivos de POM en un proyecto complejo de múltiples módulos. He descubierto que SED y encontrar el trabajo de manera mucho más confiable:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`

Por lo general, crea un proyecto de múltiples módulos porque ha considerado que los diversos módulos son partes de un solo todo. Tal vez la pieza del cliente, la pieza del controlador y la pieza de servicios. O tal vez la interfaz de usuario con servicios.

En cualquier caso, tiene sentido tener los números de versión para que los diversos módulos se muevan en el paso de bloqueo. Sin embargo, Maven no hacer cumplir eso como una regla.

En cuanto a tu pregunta

son los diferentes módulos lanzados juntos (posiblemente compartiendo el mismo número de versión)

Creo que sí. Esa es una de las razones para que sea un proyecto múltiple. De lo contrario, podría tener los módulos como proyectos independientes.

Por supuesto, este es el tipo de cosas que están plagadas de casos de borde y excepciones ;-)

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