2010-06-09 239 views
12

(也公布在行家用户)Maven 2的<resources>继承(父 - >子项目)

知道如果任何人可以在pom.xml中上的元素的继承阐明一些作为涉及资源处理和WAR插入。

为POM中的文档[1]具有下“在合并的POM元素”列出的资源。在我的本地poms上反对maven 2.2.1的一些实验似乎没有表现出这种行为。我看到的是它看起来像是由子项目(在多模块构建中)继承的,但是如果这些项目中的任何一个具有它们自己的块,它将替换父项,而不是合并。那是对的吗?

例子:

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

以下作品我预计,在不包括在最终的WAR文件开发。

父的pom.xml

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

儿童的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> 

以下变化到子(用于去除的src /主/资源的任何声明)似乎导致SRC/main/resource在进程资源期间没有被考虑,不像我期望的那样从父进程继承。

儿童的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小号

回答

10

事实上,这是本细则说什么。但是我确认Maven继承覆盖了资源而不是增加资源。这实际上是在MNG-2751中捕获的,间接在MNG-2027中捕获的,您可能想要碰撞。

TBH,我很好奇看到maven的人会对此说些什么(我个人对目前的行为感到满意,我并不想让孩子被特定需求“污染”,比如排除),并改变这种行为可能会破坏很多项目。

+0

我很满意替换,虽然它确实使配置文件不那么优雅的管理。我们通过使用传入<排除元素>的变量解决了这个问题,但它有点不清楚 – jayshao 2010-06-09 20:53:55

+0

@jayshao请注意,我只是表达个人意见,我并不是要求扣留真相:)我会看看关于maven-users列表的反馈,我现在很好奇。 – 2010-06-09 21:29:45

+0

@ pascal-thivent是的,没有看到反应飞回来,但我们现在有什么可行的,虽然更容易为孩子POM打破比我想 – jayshao 2010-06-17 19:28:57