共享多个POM文件之间的依赖关系

时间:2012-01-25 11:30:07

标签: maven maven-3

跨Maven项目共享多个依赖项的最佳实践方法是什么。

我可以想到以下两种可能的方法 -

  1. 创建父POM文件并在使用该组依赖项的每个项目中使用相同的POM文件。

  2. 使用包含依赖项的POM文件创建新的maven项目。然后在需要公共依赖项的所有项目中引用此项目。

  3. 还有其他方法,我应该使用哪种方法?

5 个答案:

答案 0 :(得分:4)

IMO它取决于您的确切用例。

选项1当然是一个很好的方法,但是如果你已经拥有一个父项目,那么管理会变得更加困难/复杂,特别是如果你有几个共享的依赖集(你可能会发现自己迷失在一个复杂的层次结构中)多个父母)。 选项1的另一个缺点是(AFAIK)不可能排除继承的依赖项,所以如果你的项目扩展了父pom,你别无选择,只能继承所有依赖项。

在这种情况下,选项2更易于管理,更清晰,更灵活。创建一个POM类型的maven项目,并在需要时为其添加依赖项。使用此解决方案,可以从POM项目中排除某些依赖项,这再次使此解决方案更加灵活。

答案 1 :(得分:1)

选项1运作良好 - 我建议。

答案 2 :(得分:1)

请查看用户指南:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management(即在父POM中使用<dependencyManagement>)。

答案 3 :(得分:1)

我认为选项2更好,因为它是containment vs inheritance问题。

如果您必须在项目中共享2个依赖关系特征,该怎么办?使用选项1,您将陷入单继承级别,而选项2则为您提供更大的灵活性。

答案 4 :(得分:1)

选项2-您需要在dependencyManagement部分中通过导入指定依赖项:

<dependencyManagement>
<dependencies>
  <dependency>
    <groupId>com.test</groupId>
    <artifactId>bom</artifactId>
    <version>1.0.0</version>
    <type>pom</type>
    <scope>import</scope>
  </dependency>
</dependencies>

有关更多信息:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management