Maven наследование и агрегация
Мне просто любопытно, что произойдет, если в одном приложении maven используются наследование и агрегация? Это структура приложения:
мой-проект-приложение
- моя-проект-банка
- моя-проект война
Теперь в pom.xml приложения я объявляю проекты jar и war как модули, и в то же время poms обоих модулей объявляют pom приложения своим родителем. Это создает какую-то избыточность здесь, не так ли?
Каково лучшее решение для этого случая?
1 ответ
Это не избыточно. Они делают разные вещи.
Если вы определите <modules>
(агрегация) вы просто говорите, какие проекты должны быть построены, и это тип пакета pom
,
Если вы унаследуете, вы унаследуете предпочтения родительской помпы, определив <parent/>
,
Увидеть:
Наследование и агрегация создают хорошую динамику для управления сборками с помощью единого POM высокого уровня. Вы часто будете видеть проекты, которые являются как родителями, так и агрегаторами. Например, все ядро maven проходит через единую базовую POM org.apache.maven:maven, поэтому сборка проекта Maven может быть выполнена одной командой: mvn compile. Однако, хотя оба проекта POM, агрегаторный проект и родительский проект не являются одним и тем же, их не следует путать. Проект POM может быть унаследован от, но не обязательно, от любых модулей, которые он объединяет. И наоборот, проект POM может объединять проекты, которые не наследуются от него.
Больше информации здесь.