使用POM导入的依赖关系管理

时间:2012-11-16 07:31:03

标签: maven parent-pom

我正在我的本地创建一个项目'test-jar',我正在使用pom文件,我没有写访问权限作为'test-jar'项目的父级。父项目已经使用旧版本定义了dependdencyManagement。

因为我必须更新项目中的依赖项版本并计划覆盖父项的依赖项管理。所以,我用自己的依赖关系管理创建了另一个POM文件,并导入到'test-jar'项目中。

我的项目:

<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>

我的父母项目:

<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>

问题是,虽然我在项目中导入了新的依赖关系管理,但我总是从父pom获得依赖版本。

我在这里使用Maven 2.2.1版本。

有没有解决方法如何从父POM覆盖依赖关系管理?

1 个答案:

答案 0 :(得分:1)

基于文档:

  

此范围仅用于pom中类型为pom的依赖项    部分。它表示指定的POM   应该用POM中的依赖项替换    部分。因为它们被替换,依赖   具有进口范围实际上不参与限制   依赖的传递性。

除了你的问题,你可以简单地使用不同的版本,这些版本与父pom的dependencyManagement中定义的onses不同。此外,您可以创建一个单独的pom,它定义了与新版本(dependencyManagement)的依赖关系,并从给定的父级继承。