2012-02-29 14 views
91

tengo un POM padres en un proyecto Maven, con esta estructura:Instalar POM padres sin la construcción de Módulos de niños

   parent 
       | 
     --------------- 
     |    | 
     child1  child2 

que desea instalar el POM del "padre"en el REPO local para permitir child1 realizo algunos cambios que hice en la administración de dependencias, pero No puedo hacer una "instalación limpia" regular porque "child2" está roto y no se compilará.

Cuál es la manera correcta de hacer esto con maven (que no sea ir al padre principal y comentar el módulo "child2").

Respuesta

136

Utilice la opción '-N' en el comando mvn.

De mvn -h:

-N, - no recursivo No recursivo en sub-proyectos

+1

La opción '-N' o '- no recursiva' significa que no se repite en subproyectos. –

25

Mientras Guillaume es de hecho bien y que es la opción correcta, yo personalmente recomiendo manteniendo a su padre como un módulo separado.

me parece el mejor enfoque para la herencia de ser de la siguiente manera:

aggregator 
|- module1/ (extends parent) 
| |- pom.xml 
|- module2/ (extends parent) 
| |- pom.xml 
|- parent/ 
| |- pom.xml 
|- pom.xml 

De esta manera siempre se puede instalar sólo el padre, con mvn clean install sin opciones adicionales.

También puede tener el elemento primario fuera del agregador para que pueda volver a utilizarlo entre más proyectos.

Existen numerosos beneficios para mantener al padre y al agregador como dos cosas separadas. Pero al final, eliges lo que es mejor para tu proyecto/entorno.

+0

Luché con este problema durante horas y descubrí que algunos proyectos lo están haciendo de esta manera, como apache sling, JackRabbit y Artifactory. – accuya

+0

Aisló la herencia del módulo maven (dependencias, propiedades, etc.) desde la creación de lotes (módulos secundarios). –

+3

¿Esto se considera una mejor práctica? ¿Algún blog u otro sobre este enfoque? – ArtB

Cuestiones relacionadas