Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven依赖层次结构-包括或不包括_Java_Maven_Dependencies_Transitive Dependency - Fatal编程技术网

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中定义依赖项时,可以省略版本。

如果我将依赖项包含在主项目级别(顶层),那么它是否对所有子模块都可用?否。在父级,您只能定义版本位于中心位置的依赖项,并且所有子模块都可以自行包含此依赖项,而无需定义版本。每个模块都必须明确定义自己的依赖项。