2017-09-19 37 views
0

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

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> 

有没有什么办法来区分它们,或者只是让它保持原状?

+0

做了一个双重的孩子pom.xml – stybl

+0

我是Maven的新手,你能说更多吗?也许有些例子。 – chebad

回答

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呈现dependencyManagement声明父POM无关即为什么还要声明,如果你再选择覆盖declration的方方面面版本依赖这种方法。

总之;如果您有一个用于多个子模块且您想要为其定义公共版本的依赖项,请使用dependencyManagement。如果依赖关系仅用于一个子模块中,或者您不想坚持使用所有子模块中使用的该依赖关系的单一版本,则不要为该依赖关系创建一个dependencyManagement条目。

相关问题