Search code examples
mavenparent-pom

Dependeny Management using POM import


I am creating a project 'test-jar' in my local and i am using pom file which I don't have write access as Parent of 'test-jar' project. The parent project has already defined depedencyManagement with old versions.

As I have to update dependency versions in my project and planning to override parent's dependency Management. So, I have created another POM file with my own dependency Management and imported into 'test-jar' project.

My Project :

<project>
  <artifactid>test-jar</artifactid>
   <parent>
         <artifactId> test-parent </artifactId>

   </parent>
   <dependencies>
        <dependency>
        <artifactId>jar/artifactId>
       </dependency>
   <dependencies>
   <dependencyManagement>
    <dependencies>
        <dependency>
        <artifactId>custom-pom</artifactId>
            <type>pom</type>
        <scope>import</scope>
    </dependency>
   </dependencyManagement>

</project>

My Parent Project:

<project>
  <artifactid>test-parent</artifactid>

   <dependencyManagement>
    <dependencies>
        <dependency>
        <artifactId>jar/artifactId>
            <version>1.0</version>
    </dependency>
   </dependencyManagement>

</project>

My Custom POM for updated dependencyManagement:

<project>
  <artifactid>custom-pom</artifactid>

   <dependencyManagement>
    <dependencies>
        <dependency>
        <artifactId>jar</artifactId>
            <version>3.0</version>
    </dependency>
   </dependencyManagement>
</project>

The problem is, I am always getting dependency version from parent pom, though i have imported new dependency management in project.

I am using Maven 2.2.1 version here.

Is there any solution how to overwrite Dependency Management from Parent POM ?


Solution

  • Based on the documentation:

    This scope is only used on a dependency of type pom in the section. It indicates that the specified POM should be replaced with the dependencies in that POM's section. Since they are replaced, dependencies with a scope of import do not actually participate in limiting the transitivity of a dependency.

    Apart from your problem you can simply use differerent version which are different of the onses defined in the parent pom's dependencyManagement. Furthermore you could create a separate pom wich defines the dependencies with new version (dependencyManagement) and inherits from the given parent.