Здається, існує декілька способів структурування батьківських пісів у багатопроектній збірці, і мені цікаво, чи хтось міркував про те, які переваги / недоліки є у кожному напрямку.
Найпростіший метод мати батьківський пом - це введення його в корінь проекту, тобто
myproject/
myproject-core/
myproject-api/
myproject-app/
pom.xml
де pom.xml є головним проектом, а також описує модулі -core -api та -app
Наступним методом є відокремлення материнського батька у власний підкаталог, як у
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
Там, де батьківський пом все ще містить модулі, але вони відносні, наприклад ../myproject-core
Нарешті, є варіант, де визначення модуля та батьківський розділені як у
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
Там, де батьківський pom містить будь-яку "спільну" конфігурацію (taskencyManagement, властивості тощо), а myproject / pom.xml містить список модулів.
Намір полягає у масштабуванні масштабних конструкцій, тому він повинен бути масштабованим для великої кількості проектів та артефактів.
Кілька бонусних питань:
- Де найкраще визначити різні спільні конфігурації як у керуванні джерелами, каталоги розгортання, загальні плагіни тощо (я припускаю, що батьків, але мене це часто кусало, і вони опинялися в кожному проекті, а не загальний).
- Як плагін, hudson та nexus Maven-релізи погоджуються з тим, як ви створюєте свої багатопроектні проекти (можливо, велике питання, це більше, якщо хтось виявився, коли, як було створено багатопроектну збірку)?
Редагувати: у кожного з підпроектів є свій pom.xml, я його не залишив, щоб тримати його коротко.