Maven 2 <ресурсы> наследование (родительский &#8594; дочерний проект)

(также размещено на maven-пользователях)

Хотите знать, может ли кто-нибудь пролить свет на наследование элементов в 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 с

Ответ 1

В самом деле, что говорится в документах. Но я подтверждаю, что наследование Maven переопределяет ресурсы вместо добавления к ним. Это фактически зафиксировано в MNG-2751 и косвенно в MNG-2027, который может вам понадобиться.

TBH, мне очень любопытно посмотреть, что скажут об этом люди maven (я лично доволен нынешним поведением, я не хочу, чтобы детские помпы были "загрязнены" конкретными потребностями, такими как исключения, в иерархии), и изменение этого поведения может сломать много проектов.