Maven 2 <resources>наследование (родитель -> дочерний проект) - PullRequest
13 голосов
/ 09 июня 2010

(также размещено на 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 с

Ответы [ 2 ]

11 голосов
/ 10 июня 2010

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

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

4 голосов
/ 19 ноября 2010

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

...