Java Maven依赖层次结构-包括或不包括
我有一个带有子模块的项目Java Maven依赖层次结构-包括或不包括,java,maven,dependencies,transitive-dependency,Java,Maven,Dependencies,Transitive Dependency,我有一个带有子模块的项目 Proj ProjA ProjB ProjC ProjA依赖于ProjY,ProjY依赖于ProjX ProjA-->ProjY-->ProjX 我在ProjA中指定ProjY依赖项。 我应该在ProjA中单独包含ProjX依赖项吗?(传递依赖?) 如果ProjB依赖ProjX呢?我应该单独包括吗?或者我可以将其包含在Porj(主)级别中 我在ProjA中指定ProjY依赖项。我应该在ProjA中单独包含ProjX依赖项吗?
Proj
ProjA
ProjB
ProjC
ProjA依赖于ProjY,ProjY依赖于ProjX
ProjA-->ProjY-->ProjX
我在ProjA中指定ProjY依赖项。
我应该在ProjA中单独包含ProjX依赖项吗?(传递依赖?)
如果ProjB依赖ProjX呢?我应该单独包括吗?或者我可以将其包含在Porj(主)级别中
我在ProjA中指定ProjY依赖项。我应该在ProjA中单独包含ProjX依赖项吗?(传递依赖?)
您不应该在ProjA中包含对ProjX的依赖,因为Maven会处理这个问题。如果没有,则说明某些配置错误。处理可传递的依赖关系是Mavens的主要特性之一,可以为您节省一些管理依赖关系的麻烦(尽管有时候,当您在项目中获得了出乎意料的依赖关系时,这可能会很烦人)
如果ProjB依赖ProjX呢?我应该单独包括吗?或者我可以
是否将其包含在Porj(主)级别
是的,您可以在ProjB中单独包含依赖项。为了确保在所有模块中获得相同版本的ProjX,可以在父pom.xml中的-元素中定义它。然后,在模块pom.xml中定义依赖项时,可以省略版本。如果我将依赖项包含在主项目级别(顶层),那么它是否对所有子模块都可用?否。在父级,您只能定义版本位于中心位置的依赖项,并且所有子模块都可以自行包含此依赖项,而无需定义版本。每个模块都必须明确定义自己的依赖项。