This is the feature I would like to see in the future. Below are the layout I can think for now:
Initially, Roo will create parent, core, and webapp projects
1. parent project:
This is pom project and the place where we call the Roo shell and use its command to create modules. Module's name format is something like (project-name)
module??? or (project-name) plugin???. The modules list in this project pom is handled by Roo generator. The list contains: core, all module, and webapp projects. All the modules inside will inherit the parent project.
The pom of this project also has dependencies of application frameworks like spring, jpa, etc.
Maybe we can use this project to build and run the full tests.
2. core project (jar)
It contains main application contexts and reusable codes shared between module projects: helpers, utils, base classes, general auditing aspects like loggers etc.
3. module project (can be one or many) (jar)
The module project contains the main components like controllers, models, services/daos, templates and resources which belong to the controllers of the module. Module project has the core project as its default dependency. The dependencies between module projects are managed by the developers.
4. webapp project (war)
It contains web configurations. It doesn't contain any component codes, templates, etc. But it contains the web resources that are shared between module projects. The dependencies in webapp are automatically handled by Roo generator during module project creation. The dependencies in webapp includes: core and all module projects. During the packaging, all module projects will be jar-ed and stored in WEB-INF/lib of the war.