Maven 2 <resources>继承(parent - &gt;子项目)</resources>

时间:2010-06-09 17:02:57

标签: maven-2 maven pom.xml

(也发布在maven-users上)

想知道是否有人可以了解pom.xml中与资源处理和WAR插件相关的元素继承。

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

示例:

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

以下按照我的预期工作,dev中的文件未包含在最终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 / main / resources的任何声明)似乎导致在进程资源期间不考虑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 s

2 个答案:

答案 0 :(得分:11)

实际上,这就是文件所说的内容。但我确认Maven继承会覆盖资源而不是添加资源。这实际上是在MNG-2751中捕获的,间接在MNG-2027中捕获,您可能想要碰撞。

TBH,我很好奇看到maven人会对此说些什么(我个人对目前的行为感到满意,我真的不希望孩子的poms被特定需求“污染”,例如排除,在层次结构中)并且改变这种行为可能会破坏许多项目。

答案 1 :(得分:4)

adding additional resources to a maven pom所述,可以使用build-helper插件解决此问题。