Я неоднократно сталкивался с одной и той же проблемой и пришел к выводу, что наилучшее решение заключается в следующем:
cool-master
|-+ parents
| |- cool-parent
| |- cool-parent-web
|
|- module1
|- module2
|- module3
|- module-web1
|- module-web2
В приведенном выше примере есть три типа модулей:
родительские POM-ы (cool-parent
, cool-parent-web
)
не веб-приложения (расширение cool-parent
)
веб-приложений (расширение cool-parent-web
)
В родителях вы можете определить настройки, которые являются специфическими для различных типов модулей. Например, в cool-parent
определите не связанные с веб-приложением вещи, где в cool-parent-web
вы можете иметь все такие причудливые вещи, как maven-war-plugin
, jetty-maven-plugin
и т. Д. У меня обычно есть cool-parent-web
расширение cool-parent
чтобы избежать дублирования зависимостей, настроек плагинов и т. д.
В cool-parent-web
определите раздел <pluginManagement/>
и настройте все компоненты для своих плагинов, а затем просто используйте их в своих веб-модулях.