2010-06-09 238 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