Maven 2 ‹resources› наследование (родительский - ›дочерний проект)

(также размещено на maven-users)

Интересно, может ли кто-нибудь пролить свет на наследование элементов в pom.xml в отношении обработки ресурсов и плагина WAR.

В документации к pom [1] есть ресурсы, перечисленные в разделе «Объединенные элементы POM». Некоторые эксперименты с моими локальными помпами против 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>

child-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 не рассматривается во время ресурсов процесса, а не наследуется от родителя, как я ожидал.

child-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


person jayshao    schedule 09.06.2010    source источник


Ответы (2)


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

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

person Pascal Thivent    schedule 09.06.2010
comment
Я согласен с заменой, хотя это делает некоторые вещи, такие как управление профилями, менее элегантными. Мы работали над этим, используя переменные, которые передаются в ‹элементы исключения›, но это немного нечисто. - person jayshao; 10.06.2010
comment
@jayshao Обратите внимание, что я просто выражаю личное мнение, я не утверждаю, что задерживаю правду :) Я посмотрю отзывы о списке пользователей maven, мне сейчас любопытно. - person Pascal Thivent; 10.06.2010
comment
@ pascal-thivent да, не видел ответа, но то, что у нас есть, на данный момент работает, хотя для дочерних POM легче сломать, чем я бы хотел - person jayshao; 17.06.2010

Как отмечено в добавлении дополнительных ресурсов в maven pom, это может быть работал с помощью подключаемого модуля build-helper.

person Grégory Joseph    schedule 19.11.2010