2011-05-18 12 views
12

He creado un plugin maven para iniciar, limpiar y detener una base de datos. Mi proyecto consiste en un archivo pom con 4 módulos:Ejecutando un plugin maven solo en el padre

<modules> 
    <module>infrastructure</module> 
    <module>domain</module> 
    <module>application</module> 
    <module>presentation</module> 
</modules> 

El plugin solamente se especifica en este POM, y no en el pom de los módulos. Cuando voy a cmd para iniciar una base de datos con:

mvn hsqldb:startdb 

Maven intenta crear una base de datos para cada archivo POM. En realidad, comienza 5 bases de datos (una para el padre pom y otra para cada módulo). Sin embargo, solo quiero uno (del padre pom). En mi archivo pom de los padres, el plugin se declara así:

<plugin> 
    <groupId>sample.plugin</groupId> 
    <artifactId>hsqldb-maven-plugin</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <inherited>false</inherited> 
    <dependencies> 
     <dependency> 
      ... 
     </dependency> 
    </dependencies> 
    <executions> 
     ... 
    </executions> 
    <configuration> 
     ... 
    </configuration> 
</plugin> 

Cualquier solución para mi problema?

Saludos cordiales,

Walle

Respuesta

20

dos maneras:

  • En la línea de comandos, haga mvn hsqldb:startdb -N

    -N, --non-recursive
    No Recursividad en sub- proyectos

    (Source) o

  • anotar su plugin con @aggregator

    Banderas esta Mojo para ejecutarlo en un multidireccional módulo, es decir agregada la acumulación con el conjunto de proyectos que figuran como módulos.

    (Source)

    Si bien no se dice explícitamente, esto significa que el plugin se puso a cargo de la construcción de los módulos del niño, es decir, los módulos niño no se construirán de forma automática.

De cualquier manera, sólo se construirá el proyecto superior y no descender en módulos. No hay manera de que sepa que puede configurar esto en un pom.

Cuestiones relacionadas