Maven依赖范围-重新访问

Maven依赖范围-重新访问,maven,Maven,请问有人知道以下关于maven官方文档中“范围矩阵”的相当明显的问题的答案吗: 脚注解释了为什么索引的单元格[compile,compile]再次包含值“compile” 在我看来,同样的论点意味着: 单元格[compile,provided]和[provided,provided]都应该包含“provided” 单元格[提供的测试]应包含“测试” 那么为什么所有这些单元格都包含“-”?!? 这对我来说没有意义 非常感谢您提供的所有有用的建议 提供的表示依赖性由容器提供,这意味着此范围的使用取

请问有人知道以下关于maven官方文档中“范围矩阵”的相当明显的问题的答案吗:

脚注解释了为什么索引的单元格[compile,compile]再次包含值“compile”

在我看来,同样的论点意味着:

  • 单元格[compile,provided]和[provided,provided]都应该包含“provided”

  • 单元格[提供的测试]应包含“测试”

  • 那么为什么所有这些单元格都包含“-”?!? 这对我来说没有意义


    非常感谢您提供的所有有用的建议

    提供的
    表示依赖性由容器提供,这意味着此范围的使用取决于手头的容器

    因此,应该在“可部署单元”(war、ear、独立jar)级别设置此范围,而不是在可传递依赖关系树的深处。 因此,为
    提供的
    依赖项提供传递性是没有用的


    相反,您可以在最高级别使用dependencyManagement覆盖作用域,以确保将容器提供的依赖项标记为已提供。

    已提供的
    表示依赖项由容器提供,这意味着此作用域的使用取决于手头的容器

    因此,应该在“可部署单元”(war、ear、独立jar)级别设置此范围,而不是在可传递依赖关系树的深处。 因此,为
    提供的
    依赖项提供传递性是没有用的


    相反,您可以用最高级别的依赖关系管理覆盖范围,以确保您根据容器提供的那些依赖关系来标记这些依赖关系。

    谢谢,但我不确信,抱歉:请考虑以下情况:1。“容器人工制品”B取决于“容器人工制品”C(范围“提供”,为什么不…)2。“我的人工制品”A取决于“容器人工制品”B(当然提供范围…)3。A包含一个类X,扩展了B.4中的类Y。Y扩展了C.5中的类Z。X调用在Z中定义的受保护方法Z.m。例如,现在编译器需要这个类Z的定义来检查Z.m的签名。但是由于[provided,provided]单元格中的“-”,类Z不在手边,会发生错误。我会这样看:要么B是一个“库”,应该用作依赖项,那么它就不应该提供依赖项,因为库可以在不同的容器中使用(或者没有任何容器)。或者B是一个可部署的单元,像一个战争、ear、可执行的jar。然后,它应该定义必要的提供的依赖,但是没有人(包括你的人工制品A)应该使用它作为依赖。谢谢,但是我不相信,抱歉:考虑下面的情况:1。“容器人工制品”B取决于“容器人工制品”C(范围“提供”,为什么不…)2。“我的人工制品”A取决于“容器人工制品”B(当然提供范围…)3。A包含一个类X,扩展了B.4中的类Y。Y扩展了C.5中的类Z。X调用在Z中定义的受保护方法Z.m。例如,现在编译器需要这个类Z的定义来检查Z.m的签名。但是由于[provided,provided]单元格中的“-”,类Z不在手边,会发生错误。我会这样看:要么B是一个“库”,应该用作依赖项,那么它就不应该提供依赖项,因为库可以在不同的容器中使用(或者没有任何容器)。或者B是一个可部署的单元,像一个战争、ear、可执行的jar。然后它应该定义所提供的必要依赖项,但是没有人(包括您的人工制品A)应该将其用作依赖项。