Одномодульный против мультимодульного проекта Maven

Я создаю новый веб-проект Java. В этом веб-приложении будет много модулей, таких как ядро ​​/ общие ресурсы, бизнес-сервис, репозиторий, безопасность, интеграция, ldap, управление пользователями,... Интересно, стоит ли разделять каждый модуль на каждый проект maven (файл jar) или создавать проект? которые включают все Java-пакеты всех модулей в один проект Maven.

Structure of Multi modules maven project

   mycompany-core
   mycompany-repository
   mycompany-api
   mycompany-usermanagement
   mycompany-business
   mycompany-web

Structure of Single module project:

   mycompany-web
       |___ src
             |____ main
                    |____ java
                            |____ com.mycompany.core
                            |____ com.mycompany.repository
                            |____ com.mycompany.business
                            |____ com.mycompany.controller

Когда мы должны применять многомодульный или одномодульный проект> Пожалуйста, дайте мне несколько советов.

2 ответа

Решение

Все продукты, над которыми я работал в Maven, были многомодульными. Это потому, что они, как правило, были большими. Однако, когда я создаю свои собственные проекты для домашних животных, они, как правило, являются одномодульными.

Как правило, по мере роста продуктов их необходимо будет объединять в несколько модулей. Некоторые проекты начинаются как единый модуль и разделяются по мере роста. Другие, созданные разработчиками с большим опытом, уже разделены, потому что разработчики уже знают, как будет расти код и как его нужно организовывать.

В частности, из вашего списка, "ядро / общие ресурсы, бизнес-сервис, хранилище, безопасность, интеграция, ldap, управление пользователями", я бы выделил "общие ресурсы" в свой собственный модуль, потому что он пахнет так, как если бы его можно было использовать в других проектах. Все остальные части могли бы поместиться в один модуль, но мне нужно больше узнать о проекте.

Это зависит от вашего требования. Если вы хотите запустить это с помощью .sh или же .bat у вас должна быть одна цель (одна jar с другими библиотеками).

Если ваш проект построен как API Лучше иметь свою сборку как многомодульную.

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