2010-06-09 11 views
12

(pubblicato anche su Maven-users)Maven 2 <resources> eredità (genitore -> progetto figlio)

chiedo se qualcuno può far luce su eredità degli elementi in pom.xml come riferisce a risorsa di elaborazione e la guerra collegare.

La documentazione per il pom [1] contiene le risorse elencate in "Elementi nel POM che vengono uniti". Alcuni esperimenti sui miei poms locali contro Maven 2.2.1 non sembrano mostrare questo comportamento. Quello che vedo è che è ereditato da progetti figlio (in una build multi-modulo), ma che se qualcuno di quei progetti ha il proprio blocco, sostituisce il genitore, non unito. È corretto?

Esempio:

parent-pom.xml 
| 
|-> child-pom.xml 

Le seguenti opere come mi si aspetterebbe, con file in dev non incluso in una guerra finale.

genitore-pom.xml

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <excludes> 
      <exclude>${dev-config.path}</exclude> 
     </excludes> 
    </resource> 
<resources> 

bambino-pom.xml

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <excludes> 
      <exclude>${dev-config.path}</exclude> 
     </excludes> 
    </resource> 
    <resource> 
     <directory>src/main/rules</directory> 
    </resource> 
    <resource> 
     <directory>src/test/rules</directory> 
    </resource> 
</resources> 

la seguente modifica al bambino (la rimozione di ogni dichiarazione in src/main/risorse) sembra provocare src/main/resource non viene considerata durante le risorse del processo, non ereditando dal genitore come mi sarei aspettato.

bambino-pom.xml

<resources> 
    <resource> 
     <directory>src/main/rules</directory> 
    </resource> 
    <resource> 
     <directory>src/test/rules</directory> 
    </resource> 
</resources> 

[1] http://maven.apache.org/guides/introduction/introduction-to-the-pom.html s

risposta

10

In effetti, questo è quello che dice la documentazione. Ma confermo che l'ereditarietà di Maven sovrascrive le risorse invece di aggiungerle. Questo viene effettivamente acquisito in MNG-2751 e indirettamente in MNG-2027, che è possibile che si desideri eseguire il dump.

TBH, sono molto curioso di vedere cosa diranno le persone di questo genere (sono personalmente contento del comportamento attuale, non voglio che i figli siano "inquinati" da esigenze specifiche, come esclusioni, in una gerarchia) e la modifica di questo comportamento potrebbe interrompere molti progetti.

+0

Sto bene con la sostituzione, anche se fa alcune cose come la gestione con profili meno eleganti. Abbiamo lavorato attorno usando le variabili che sono state passate in , ma è un po 'impuro – jayshao

+0

@jayshao Nota che sto solo esprimendo un'opinione personale, non sto reclamando di detenere la verità :) Vedrò il feedback sulla lista degli utenti esperti, sono curioso ora. –

+0

@ pascal-thivent sì, non ho visto una risposta indietro, ma quello che abbiamo è praticabile per ora, anche se più facile per le POM dei bambini di rompere di quanto mi piacerebbe – jayshao

Problemi correlati