Maven依赖关系层次结构 - 包括或不包括

时间:2013-07-01 19:17:47

标签: java maven dependencies transitive-dependency

我有一个带子模块的项目。

 Proj
    ProjA
    ProjB
    ProjC

ProjA依赖于ProjY,它依赖于ProjX。

  ProjA-->ProjY-->ProjX

我在ProjA中指定了ProjY依赖项。 我应该单独在ProjA中包含ProjX依赖吗? (传递依赖?)

如果ProjB依赖于ProjX怎么办?我应该单独包括吗?或者我可以在Porj(主要)级别中包含它?

1 个答案:

答案 0 :(得分:0)

  

我在ProjA中指定了ProjY依赖项。我应该单独在ProjA中包含ProjX依赖吗? (传递依赖?)

你不应该在ProjA中包含对ProjX的依赖,因为Maven会处理这个问题。如果没有,则某些配置是错误的。处理传递依赖是Mavens的主要功能之一,可以帮助您节省管理依赖项的麻烦(尽管有时很烦人,当您在项目中获得您不期望的依赖项时)。

  

如果ProjB依赖于ProjX怎么办?我应该单独包括吗?或者我可以   包括在Porj(主要)级别的那个?

是的,您应该单独在ProjB中包含依赖项。要确保在所有模块中获得相同版本的ProjX,可以在父pom.xml中的-element中定义它。然后,您可以在模块pom.xml中定义依赖项时省略该版本。