Parece haber varias formas de estructurar poms padres en una compilación multiproyecto y me pregunto si alguien tenía alguna idea sobre cuáles son las ventajas/desventajas en cada sentido.Maven parent pom vs modules pom
El método más simple de tener un pom padre sería ponerlo en la raíz de un proyecto, es decir
myproject/
myproject-core/
myproject-api/
myproject-app/
pom.xml
donde el pom.xml es tanto el proyecto principal, así como describe la -API núcleo-e módulos -App
el siguiente método es separar a los padres en su propio subdirectorio como en
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
Cuando el pom padre todavía contiene los módulos, pero son relativos, p. ../myproject-core
Por último, está la opción en la definición del módulo y el padre se separan como en
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
Cuando el pom principal contiene cualquier configuración "compartida" (DependencyManagement, propiedades etc.) y myproject/pom.xml contiene la lista de módulos.
La intención es ser escalable a una construcción a gran escala, por lo que debe ser escalable para una gran cantidad de proyectos y artefactos.
Algunas preguntas de bonificación:
- ¿Dónde está el mejor lugar para definir los distintos configuración compartida como en control de código fuente, los directorios de implementación, etc. plugins comunes (estoy asumiendo que el padre, pero a menudo he sido mordido por esto y terminaron en cada proyecto en lugar de uno común).
- ¿Cómo se relacionan el complemento, hudson y nexus de maven-release con la forma de configurar sus proyectos múltiples (posiblemente una gran pregunta, es más si alguien ha sido atrapado cuando por la forma en que se ha configurado una construcción multiproyecto)?
Editar: Cada uno de los subproyectos tiene su propio pom.xml, lo he dejado fuera para mantenerlo corto.
¿Los módulos tienen cada uno su propio pom también? Mi proyecto tiene un pom padre, pero los módulos también tienen un pom. (tal vez una cuarta forma de lo que describes) – harschware
Ah, sí, voy a editar y actualizar. Cada uno de los submódulos tiene su propio pom también. –
Al igual que una actualización, puedo ver una ventaja de la segunda opción es que es más fácil de administrar en Eclipse donde la raíz pom.xml en el primer y tercer ejemplo sería difícil de incluir si los submódulos son proyectos separados en Eclipse . –