Suppose there are multiple projects are being developed
in your organization. Assume in all the projects 80% of the libraries are
common.
Let’s go with first approach: where you specify the
dependencies of all the projects separately in their respective pom files.
Assume 450 projects out of 500 are using junit version 4.4. Suppose your
organization wants to use junit version 4.12. We will be end up in updating all
the 450 files manually.
Let’s go with second approach : You specify all the
common dependencies in a pom file using <dependencyManagement> elements.
Make sure all the projects inherit the dependencies from this parent pom. In
this approach, you just need to change the version in one place.
Parent Pom
<project> <modelVersion>4.0.0</modelVersion> <groupId>org.parentProject</groupId> <artifactId>org.parentProject</artifactId> <version>1</version> <name>Parent Dependencies</name> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <properties> <junit.version>4.12</junit.version> </properties> </project>
Child Pom
<project> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.parentProject</groupId> <artifactId>org.parentProject</artifactId> <version>1</version> </parent> <artifactId>child project1</artifactId> <groupId>child project1</groupId> <version>1</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> </project>
You may ask me, why should I used dependencyManagement
element to specify all the common dependencies. Why can’t I use
<dependencies> elements to specify the dependencies.
Artifacts specified in the <dependencies> section
will ALWAYS be included as a dependency of the child module(s). Artifacts
specified in the <dependencyManagement> section, will only be included in
the child module if they were also specified in the <dependencies>
section of the child module itself.
No comments:
Post a Comment