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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access