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" ).

Respuestas:


191

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

De mvn -h:

-N, - no recursivo No recurrir a subproyectos


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.