2012-02-06 11 views
12

Escenario:¿Cómo compilar la dependencia en maven?

Tengo un proyecto de nivel principal A y en A, dos proyectos secundarios B y C trabajados por diferentes desarrolladores, pero coinciden en la abstracción a través de interfaces comunes.

B depende de C (dependencia). En pom de B I añade

<dependency> .. details of project C..</dependency> . 

Hacer esto, experto inserta las dependencias bien, excepto que el proyecto C no se vuelve a compilar.

Quiero proyecto C para automáticamente volver a compilar cada vez que puedo compilar B.

Respuesta

17

Si desea construir B y construir automáticamente sus dependencias, puede usar las opciones avanzadas del reactor maven como --also-make-dependents.

mvn clean install –-projects B –-also-make 

Eso compilará todos los submódulos de A de los que depende B. Hay una publicación útil en sonetype blog sobre las opciones avanzadas del reactor maven. http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/

+0

¡Exactamente lo que necesito! – SQC

+0

Nota: use '--also make' NOT' --also-make-dependdents'. Lo último es hacer cualquier cosa que dependa de B mientras que la primera es hacer cualquier cosa de la que B dependa: https://maven.apache.org/guides/mini/guide-multiple-modules.html –

+0

@SQC: ¿Es esto? posible construir un subconjunto de dependencias? –

8

proyectos Lista B y C como módulos en el pom del proyecto A. Ahora cuando se genera un proyecto, se debe construir el proyecto B y C automáticamente y en el orden correcto.

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
          http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>multi</groupId> 
    <artifactId>A</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 

    <modules> 
     <module>B</module> 
     <module>C</module> 
    </modules> 
</project> 

Ver this para un ejemplo de un proyecto de varios módulos experto.

+1

Tengo un pom similar a este. Esto no es lo que quiero, ya que no quiero recompilar todos los proyectos desde el directorio de nivel superior. (Suponer que hay muchos módulos C, D, E, F y B solo depende de algunos módulos C y E). – SQC

+0

+1 por su ayuda. Este pom es bastante útil en muchas situaciones, aunque este es un poco diferente. – SQC

0

A menudo utilizo el plugin Maven reactor para tratar con este tipo de problemas. Este complemento incluso cubre requisitos difíciles que puede tener un proyecto complejo con muchos submódulos en una estructura compleja. Ver link para ver ejemplos.

Para las situaciones anteriores, utilizando

mvn reactor:make -Dmake.folders=B 

para construir B y C (y todas las dependencias de B si existe).

Espero que haya sido útil.

Cuestiones relacionadas