2010-11-10 11 views
10

Sto cercando di ridurre la copia/incolla nei nostri file di Maven Pom.maven2: come condividere una configurazione plugin tra padre e figli pom?

Abbiamo un maestro pom e molti progetti bambini che ereditano dal maestro.

voglio condividere una definizione plug complesso che sembra:

<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> 

Quando questa definizione plugin è in POM del progetto, l'imballaggio è ben fatto.
Quando la definizione viene spostata su padre principale (in o in), la confezione non viene nemmeno avviata.

È possibile condividere una configurazione di plugin? Come ?

- Modifica dopo le prime risposte ---
Ho provato quanto segue:
- mettere il mio XL confezionamento plug-config nell'elemento del mio pom genitore
- aggiungere queste righe nel mio progetto pom nell'elemento :

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

ma non funziona ... ciò che può essere di sbagliato in questo?

- ultima modifica - penso di ottenere quello che era il problema:
la dichiarazione riutilizzo plugin dovrebbe essere dichiarato in un profilo build.
L'ho fatto in un plug-in sempre abilitato e ora funziona correttamente.

Grazie mille.

risposta

13

È possibile includere i plug-in del genitore in un tag <pluginManagement>.

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

I plugin figli erediteranno le configurazioni quando dichiarano il plug-in nel tag di build.

+0

Ho provato questo ma non funziona. Ho aggiornato la mia domanda riguardo alla tua risposta. – Guillaume

+0

Esegui guida: efficace-pom e vedi come appare la configurazione del plugin. Sicuramente stai usando il pluginManagenement? –

+0

build che usa il plugin è stato dichiarato in un profilo. Quindi la configurazione del plugin dovrebbe essere stata dichiarata anche in un profilo ... Grazie per il tuo aiuto. – Guillaume

2

Hai provato a utilizzare la funzione plugin management di Maven? Sarà consentono di spingere che le informazioni di configurazione verso il basso per i file i bambini pom.xml dalla pom.xml genitore:

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

Ora, non tutti i plugin sono così fatto come quelli del org.apache.maven gruppo .plugins. Potrebbe essere necessario spostare la sezione di configurazione tra gli elementi di esecuzione.

Problemi correlati