2010-06-09 14 views
12

(également affiché sur les utilisateurs de Maven)Maven 2 <resources> héritage (parent -> projet enfant)

Vous vous demandez si quelqu'un peut faire la lumière sur l'héritage des éléments en pom.xml que concerne le traitement des ressources et la guerre brancher.

La documentation de pom [1] contient des ressources répertoriées sous "Eléments dans le POM fusionnés". Certaines expérimentations sur mes poms locaux contre maven 2.2.1 ne semblent pas présenter ce comportement. Ce que je vois, c'est qu'il semble être hérité par des projets enfants (dans une construction multi-module), mais que si l'un de ces projets a son propre bloc, il remplace le parent, pas fusionné. Est-ce exact?

Exemple:

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

Les travaux suivants que je vous attendriez, avec les fichiers dev non inclus dans une guerre finale.

parent-pom.xml

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

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

Le changement suivant à l'enfant (supprimant toute déclaration pour src/main/ressources) semble entraîner src/main/ressource n'étant pas considérée pendant les ressources de processus, ne héritant pas du parent comme je l'avais prévu.

enfant 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

Répondre

10

En effet, c'est ce que les dit documentations. Mais je confirme que l'héritage Maven remplace les ressources au lieu de les ajouter. Ceci est réellement capturé dans MNG-2751, et indirectement dans MNG-2027, que vous pourriez vouloir bump. TBH, je suis très curieux de voir ce que les maven diront à ce sujet (je suis personnellement heureux avec le comportement actuel, je ne veux pas vraiment que les enfants soient pollués par des besoins spécifiques, comme les exclusions, dans une hiérarchie) et changer ce comportement pourrait casser beaucoup de projets.

+0

Je suis d'accord avec le remplacement, bien qu'il rende certaines choses comme la gestion avec des profils moins élégants. Nous avons travaillé en utilisant des variables qui sont passées dans les <éléments d'exclusion>, mais c'est un peu sale – jayshao

+0

@jayshao Notez que je ne fais qu'exprimer une opinion personnelle, je ne prétends pas détenir la vérité :) Je vais regarder les commentaires sur la liste maven-users, je suis curieux maintenant. –

+0

@ pascal-thivent ouais, je n'ai pas vu une réponse revenir en arrière, mais ce que nous avons est réalisable pour l'instant, bien que plus facile pour les POMs enfants de casser que je le voudrais – jayshao