2010-11-10 14 views
10

Estoy tratando de reducir la copia/pegado en nuestros archivos maven pom.maven2: cómo compartir una configuración de plugin entre parent y children pom?

Tenemos un pom maestro y muchos proyectos para niños heredan del maestro.

quiero compartir una definición complemento complejo muy parecido a:

<plugins> 
    ... 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>appassembler-maven-plugin</artifactId> 
     <configuration> 
      <!-- many xml lines here --> 
     </configuration> 

     <executions> 
      <execution> 
       <phase>package</phase> 
       <goals> 
        <goal>assemble</goal> 
        <goal>generate-daemons</goal> 
        <goal>create-repository</goal> 
       </goals> 
      </execution> 
     </executions> 

     <dependencies> 
      <dependency> 
       <groupId>org.codehaus.mojo.appassembler</groupId> 
       <artifactId>appassembler-booter</artifactId> 
       <version>1.0</version> 
      </dependency> 
     </dependencies> 
    </plugin> 
    ... 
</plugins> 

Cuando esta definición plug-in está en el pom proyecto, los envases estén bien hecho.
Cuando la definición se mueve a parent pom (in o in), el paquete no se inicia.

¿Es posible compartir una configuración de complemento? Cómo ?

- Editar después de las primeras respuestas ---
He intentado lo siguiente:
- poner mi XL embalaje plug-in de configuración en el elemento de mi padre pom
- añadir estas líneas en mi proyecto pom en el elemento :

<plugins> 
... 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>appassembler-maven-plugin</artifactId> 
    </plugin> 
... 
</plugins> 

pero no está funcionando ... ¿Qué puede haber de malo en eso?

- última edición - Creo que lo entiendo cuál era el problema:
la declaración reutilización plug-in debería ser declarado en una acumulación perfil.
Lo hice en un plugin siempre habilitado y ahora funciona bien.

Muchas gracias.

Respuesta

13

Puede envolver los complementos del elemento principal en una etiqueta <pluginManagement>.

<build> 
     <pluginManagement> 
      <plugins> 
       <plugin> ... </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

Los complementos para niños heredarán las configuraciones cuando declaren el complemento en su etiqueta de compilación.

+0

Lo he intentado pero no funciona. He actualizado mi pregunta con respecto a su respuesta. – Guillaume

+0

Ejecute la ayuda: effective-pom y vea cómo se ve la configuración del complemento. ¿Definitivamente estás usando el pluginManagenement? –

+0

compilación utilizando el complemento fue declarado en un perfil. Entonces, la configuración del complemento debería haberse declarado también en un perfil ... Gracias por su ayuda. – Guillaume

2

¿Ha intentado utilizar la característica plugin management de Maven? Que va a permitir que usted empuje que la información de configuración a los archivos de los niños pom.xml del pom.xml padres:

<build> 
     <pluginManagement> 
      <plugins> 
       <plugin>your_plugin</plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

Ahora bien, no todos los plugins están tan bien hechos como los de la org.apache.maven grupo .plugins. Puede ser necesario mover la sección de configuración entre los elementos de ejecución.

Cuestiones relacionadas