2013-02-01 13 views
12

Sto provando a scrivere un padre gen, e ho definito un plugin, ma ho bisogno di cambiare la configurazione per tutte le istanze ereditate. Quindi, posso mettere qualche configurazione nella definizione <pluginManagement>, e posso sovrascriverla nello <plugin>, ma come faccio a riportare i bambini alla versione <pluginManagement>?Lottare con l'ereditarietà della configurazione del plugin genitore/figlio Maven

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.9.1</version> 
       <executions...> 
       <configuration> 
        <configLocation> 
         (used by all children) 
        </configLocation> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <configuration> 
       <configLocation> 
        (unique to the parent) 
       </configLocation> 
      </configuration> 
     </plugin> 
    </plugins> 
<build> 

Quindi, quello che succede è che i bambini continuano a mostrare la configurazione del genitore.

risposta

12

Ok, credo di avere che la risposta, nel mio caso, si riferisce a ciò che è stato specificato - ho avuto bisogno il tag Tuttavia la soluzione è stata nel tag,.. legandosi ad un non- fase, esegue .Questo lo sapevo.Quello che ho scoperto è che doveva corrispondere in ordine per farlo scavalcare. Pertanto, la configurazione non viene mai analizzata e non ha importanza.

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <!-- Main declaration of the plugin --> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.9.1</version> 
       <executions> 
        <execution> 
         <!--This must be named--> 
         <id>checkstyle</id> 
         <phase>compile</phase> 
         <goals> 
          <goal>check</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration...> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
      <!-- Uses the default config --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <inherited>false</inherited> 
      <executions> 
       <execution> 
        <!--This matches and thus overrides--> 
        <id>checkstyle</id> 
        <phase>none</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
7

È possibile specificare esplicitamente nel vostro pom genitore che il plugin non dovrebbe essere ereditata:

<build> 
    <pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <version>2.9.1</version> 
      <executions...> 
      <configuration> 
       <configLocation> 
        (used by all children) 
       </configLocation> 
      </configuration> 
     </plugin> 
    </plugins> 
</pluginManagement> 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <inherited>false</inherited>      <!-- Add this line --> 
     <configuration> 
      <configLocation> 
       (unique to the parent) 
      </configLocation> 
     </configuration> 
    </plugin> 
    </plugins> 
<build> 

E nel vostro pom bambino, è necessario specificare il plugin (la configurazione sarà poi venire dall'elemento <pluginManagement> genitore .

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
    </plugin> 
    </plugins> 
<build> 
+1

Beh, sì, è corretto. Tuttavia, significa specificare esplicitamente il plug-in in * ogni * child. Mi piaceva l'idea che potessi ereditare automaticamente dal genitore. –

Problemi correlati