14

(也发布在 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

4

2 回答 2

14

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

TBH,我很想知道专家们会对此说些什么(我个人对当前的行为感到满意,我真的不希望儿童 pom 被特定需求“污染”,比如排除,在层次结构)并改变这种行为可能会破坏很多项目。

于 2010-06-09T20:00:53.930 回答
6

正如在向 maven pom 添加额外资源时所指出的,这可以使用build-helper插件来解决。

于 2010-11-19T18:32:53.397 回答