13

我已经搜索过这样的问题,但没有找到任何东西,所以我开始了。

我有一个多模块 Maven 项目。多个模块都继承同一个父级,其中定义了公共依赖项。其中,有一个我自己的模块,一个“通用”模块,其中实现了一些通用功能。

我的问题是:对于常见的依赖项,更好的做法是什么:像我目前所做的那样,在父项中明确定义它们?或者在其他模块引用的“通用”模块中定义它们,然后依赖传递性(如通用依赖项的单入口点)?

4

2 回答 2

17

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

在你的父母 pom 中:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

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

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
  </dependency>
</dependencies>

然后你就可以从其他子模块中引用你的公共子模块了。

于 2011-07-26T16:57:47.143 回答
0

我可以看到两个合理的选择:

  • 在公共模块中声明公共依赖项
  • 使用导入范围

当您有多个模块依赖于相同的大型组件堆栈以及它们自己的依赖项时,第二个选项很有用。

于 2011-07-26T17:16:20.780 回答