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 может объединять проекты, которые не наследуются от него.

Больше информации здесь.

Другие вопросы по тегам