Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Single-module vs Multi-modules maven project

I'm creating a new java web project. This web application will have many modules such as core/commons, business service, repository, security, integration, ldap, user management,.... I wonder if I should separate each module into each maven project (jar file) or create project that include all java packages of all modules into single one maven project.

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

When should we apply multi-modules or single-module project> Please give me some advice.

like image 687
Barcelona Avatar asked Jul 23 '14 04:07

Barcelona


2 Answers

All products I've worked on in Maven were multi-module. This is because they tended to be big. However, when I create my own pet projects, they are normally single-module ones.

As a rule, as products grow, they will need to be organized into multi-modules. Some projects start as a single module and are split as they grow. Others, created by developers with more experience, are already divided up, because the developers already know how the code will grow and how it needs to be organized.

Specifically, from your list, "core/commons, business service, repository, security, integration, ldap, user management", I would separate "commons" into its own module, because it smells like it could be reused on other projects. The other parts could all fit into one module, but I'd need more insight into the project.

like image 186
Alexandre Santos Avatar answered Sep 23 '22 06:09

Alexandre Santos


It is depend on your requirement. If you want to run this using .sh or .bat you should have single target(single jar with other libraries).

If your project build as an API it is better to have your build as multi module one.

like image 35
Ruchira Gayan Ranaweera Avatar answered Sep 23 '22 06:09

Ruchira Gayan Ranaweera