如何区分父pom中的子依赖?

时间:2017-09-19 12:22:50

标签: maven dependencies

我有几个具有相同依赖关系的子pom.xml文件,但是 他们只有版本不同。我想使用<dependencyManagement>从父pom.xml继承它们。例如:

   Child1:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.2.4</version>
</dependency>

   Child2:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>0.9.9</version>
</dependency>

   Child3:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.1</version>
</dependency>

有没有办法区分它们或只是保留原样?

1 个答案:

答案 0 :(得分:1)

可以使用dependencyManagement在父POM中声明这些依赖项,然后继承该声明并覆盖其在子POM中的版本。

所以给出你问题中的例子,如果父POM看起来像这样:

<dependencyManagement>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.5.1</version>
    </dependency>
</dependencyManagement>

然后您的孩子POM仍然可以声明他们自己的com.google.code.gson:gson版本。

...使用dependencyManagement的规范优势是......

  

依赖管理提供:

     
      
  • 整合和集中管理版本......当您有多个共享父项目的项目时,此功能特别有用
  •   
  • 定义要在多个项目中使用的工件的标准版本
  •   

...这种声明包含子POM中的版本的依赖的方法使得父POM中的dependencyManagement声明无关紧要,即如果您选择覆盖该缓存的每个方面,为什么还要声明它。

总结;如果您具有在多个子模块中使用的依赖项,并且您要为其定义公共版本,请使用dependencyManagement。如果依赖项仅在一个子模块中使用和/或您不希望在所有子模块中使用该依赖项的单个版本,则不必为该依赖项创建dependencyManagement条目。 / p>