Maven多模块:在一个模块中聚合常见的依赖关系?

Ele*_*aar 11 dependencies maven multi-module

我没有找到任何东西就搜索过这样的问题,所以我走了.

我有一个多模块maven项目.多个模块都继承相同的父模块,其中定义了公共依赖项.其中,有一个我自己的模块,一个'通用'模块,其中实现了一些常用功能.

我的问题是:对于公共依赖项,什么是更好的做法:在父级中明确地定义它们,就像我现在一样?或者在"公共"模块中定义它们,其他模块引用它们,然后依赖于传递性(如公共依赖项的单入口点)?

Cap*_*aps 16

最好使用父pom中的dependencyManagement标记来定义依赖项及其版本,然后在需要的子模块中引用这些依赖项.当您需要项目中的其他子模块(即来自另一个子模块的公共子模块)时,将依次发现依赖关系.例如:

在你的父母pom:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

在你的普通pom中(注意没有版本或范围):

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

然后你可以从其他子模块中引用你的常见子模块.

  • 我使用如上所述的dependencyManagagement并将每个模块的依赖项放在模块级POM中,除非依赖性是100%的模块总是...然后我把它放在父POM中.不要在每个子POM中不需要的父POM中放置依赖关系,并且肯定不创建项目只是为了引入依赖关系.跨子模块重复这些依赖关系并不是什么大问题,因为您不需要提供版本,因为父级中的dependencyManagement节为您执行此操作. (2认同)