In a large-scale development project with hundreds of Maven modules, managing dependencies could be a hazardous task. There are two effective ways to manage dependencies: POM inheritance and dependency grouping. With POM inheritance, the parent POM file has to define all the common dependencies used by its child modules under the dependencyManagement
section. This way we can avoid any duplicate dependencies. Also, if we have to update the version of a given dependency, then we only have to make a change in one place. Let's take the same example we discussed before using the WSO2 Carbon Turing project. Let's have a look at the dependencyManagement
section of parent/pom.xml
(only a part of the POM file is shown here):
<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-transport-mail</artifactId> <version>${axis2-transports.version}</version...