Instale POM principal sin construir módulos secundarios

115

Tengo un POM principal en un proyecto de Maven, con esta estructura:

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

Quiero instalar el POM del "padre" en el REPO local para permitir que child1 realice algunos cambios que hice en dependencyManagement, pero no puedo hacer una "instalación limpia" regular porque "child2" está roto y no se compilará.

Cuál es la forma correcta de hacer esto con maven (aparte de ir al pom principal y comentar el módulo "child2" ).

Señor Eddart
fuente

Respuestas:

191

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

De mvn -h:

-N, - no recursivo No recurrir a subproyectos

Guillaume Polet
fuente
1
La opción '-N' o '--non-recursive' significa no recurrir a subproyectos.
STB Land
36

Si bien Guillaume tiene razón y esa es la opción correcta, personalmente recomendaría mantener a su padre como un módulo separado.

Encuentro que el mejor enfoque para la herencia es el siguiente:

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

De esta manera, siempre puede instalar solo el padre, mvn clean installsin opciones adicionales.

También puede tener el padre fuera del agregador para poder reutilizarlo entre más proyectos.

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

carlspring
fuente
1
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
Aisló la herencia del módulo maven (dependencias, propiedades, etc.) de la construcción por lotes (módulos secundarios).
Marinero del Danubio
4
¿Se considera esto una buena práctica? ¿Algún blog u otro sobre este enfoque?
Trineo
1
@ArtB ¿Ha tropezado con un artículo de este tipo mientras tanto?
Tomislav Nakic-Alfirevic
4
@MaximilianSchulz: No hay un mundo perfecto, como dicen ... Esta es solo una opción para hacerlo.
Carlspring