Кажется, существует несколько способов структурирования родительских помпов в сборке мультипроектов, и мне интересно, есть ли у кого-нибудь какие-либо соображения о том, какие преимущества/недостатки есть в каждом случае.
Самый простой способ иметь родительский pom должен помещать его в корень проекта i.e.
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/
Если родительский pom все еще содержит модули, но они относительны, например.../MyProject-жильный
Наконец, существует опция, в которой определение модуля и родительский элемент разделены, как в
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
Если родительский pom содержит любую "общую" конфигурацию (dependencyManagement, свойства и т.д.), а myproject/pom.xml содержит список модулей.
Цель состоит в том, чтобы быть масштабируемой до крупномасштабной сборки, поэтому она должна быть масштабируемой для большого количества проектов и артефактов.
Несколько бонусных вопросов:
- Где лучше всего определить общую общую конфигурацию, например, в исходном управлении, каталоги развертывания, общие плагины и т.д. (я предполагаю родителя, но меня часто укусили это, и они оказались в каждом проект, а не общий).
- Как сделать Maven-релиз плагин, Гудзон и нексуса дело с тем, как вы создали свои мульти-проекты (возможно, гигантский вопрос, больше, если кто-то был пойман, когда от того, как построить мульти-проект был создан )?
Изменить: каждый из подпроектов имеет свой собственный pom.xml, я оставил его, чтобы сохранить его кратким.