Home > Articles > Programming

Maven: Handling Multiprojects

  • Print
  • + Share This
Maven is an incredibly powerful tool that allows for the easy maintainability of Java projects. But what if your project is more complex than a simple Hello World applet? Marcus Zarra introduces the Maven multiproject concept, which is designed to facilitate the management of complex projects.
Like this article? We recommend

For more information on Java development, visit our Java Reference Guide or sign up for our Java Newsletter.

When a project is dealing with a multitier environment, the directory structure invariably starts to get confusing. For example, when a single project handles the EJB layer, the Web Application layer, and potentially a client layer, the directory layout becomes large and unmanageable. The most common solution is to break up the single project into many smaller projects—each with its own ant build file. There's a problem, however: overall project management. If each ant file is not updated at the same time, a form of version skew develops. The properties for the project end up being duplicated across many build files with the resulting errors that causes.

Part of the goal of the Maven project is to solve these problems. Maven is built from the ground up with multiproject development in mind. In this article, I will walk you through a simple multiproject directory structure and demonstrate how Maven puts it all together—including solving the complex dependencies.

Project Structure

This example project has three subprojects:

  • util: The util project contains all the classes that are utility in nature, including property handlers, encryption handlers, and so on.
  • war: Everything that belongs in the web presentation layer belongs in this project. All of the JSPs, HTML files, servlets, and so on are contained in this project.
  • ejb: Everything that belongs in the EJB layer goes into this project. Entity Beans, Session Beans, and Messaging beans are the primary classes found in this project.
  • + Share This
  • 🔖 Save To Your Account