Using POM Inheritance
Maven projects are completely described by a Project Object Model (POM), and
when you break a project into subprojects, each subproject will have its
own POM. Because a series of related projects most likely originated
from the same organization, have the same developer team, and use a
similar set of dependencies, related project POMs will tend to contain
duplicate data. From the previous example, core
would contain the same developers
element as web
, which would contain the same developers
element as the packager
project. Configuration duplication is
just as bad as code duplication, and to reduce the amount of work to
maintain related POMs you'll need to have each POM inherit from a
super-POM. When a project's POM inherits from a common POM, subprojects
need to specify only how they're different from the main project. Maven
supports project inheritance, which means that any subproject can
inherit from its parent's project.xml, maven.xml, and properties files (project.properties and build.properties).
How do I do that?
Figure 3-2 shows the four subprojects' project.xml files, along with a new common/ directory that you have created. The common/ directory contains the shared project.xml and project.properties files you want all subprojects to inherit from. You can put in the common/ directory any Maven build-related file you wish to share between your Maven subprojects; this includes project.properties, project.xml, and maven.xml.
Figure 3-2. Maven build files ...
Get Maven: A Developer's Notebook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.