2010-06-09 16 views
12

(también publicado en maven-usuarios)Maven 2 <resources> herencia (padre -> proyecto secundario)

Se pregunta si alguien puede arrojar algo de luz sobre la herencia de los elementos en pom.xml que se relacionen con los recursos de procesamiento y la guerra enchufar.

La documentación para el pom [1] tiene los recursos enumerados en "Elementos en el POM que se fusionan". Algunos experimentos en mis poms locales contra maven 2.2.1 no parecen exhibir ese comportamiento. Lo que veo es que parece heredado por proyectos secundarios (en una compilación de varios módulos), pero que si alguno de esos proyectos tiene su propio bloque reemplaza al padre, no se fusiona. ¿Es eso correcto?

Ejemplo:

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

Los siguientes trabajos como era de esperar, con archivos en dev no incluido en una guerra final.

padre-pom.xml

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

niño-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> 

El siguiente cambio en el niño (la eliminación de cualquier declaración de src/main/resources) parece resultar en src/main/resource no se considera durante los recursos del proceso, no se hereda del padre como esperaba.

pom.xml niño-

<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

Respuesta

10

De hecho, eso es lo que dice la documentación. Pero confirmo que la herencia Maven anula los recursos en lugar de agregarlos. Esto se captura en realidad en MNG-2751, e indirectamente en MNG-2027, que es posible que desee golpear.

TBH, tengo mucha curiosidad por ver lo que dirán los maven sobre esto (personalmente estoy contento con el comportamiento actual, realmente no quiero que los poms de niños se "contaminen" por necesidades específicas, como exclusiones, en una jerarquía) y cambiar este comportamiento podría romper muchos proyectos.

+0

Estoy de acuerdo con el reemplazo, aunque hace algunas cosas como la administración con perfiles menos elegantes. Trabajamos utilizando variables que pasan a , pero está un poco sucio – jayshao

+0

@jayshao Tenga en cuenta que solo estoy expresando una opinión personal, no estoy diciendo que detenga la verdad :) Voy a ver los comentarios en la lista de usuarios maven, tengo curiosidad ahora. –

+0

@ pascal-thivent Sí, no vi una respuesta volar, pero lo que tenemos es viable por ahora, aunque es más fácil para los niños POM romperse de lo que me gustaría – jayshao

Cuestiones relacionadas