在Maven中拉出依赖项时,会对<optional>和<scope>元素之间的区别感到困惑吗?</scope> </optional>

时间:2014-01-29 11:32:55

标签: maven

我对两者的理解是:

<scope> - “使用此依赖关系@ runtime,compile,test etc

<optional> - “避免提取传递依赖关系,不要将其用于编译目的”

如果我错了,请纠正我。另外,请让我知道何时使用<optional>以及为什么(它的好处)。

非常感谢

1 个答案:

答案 0 :(得分:1)

在文档(粗体部分)

中很好地描述了这一点

Optional Dependencies

  

当不可能(无论出于什么原因)将项目拆分为子模块时,使用可选的依赖项。 这个想法是,某些依赖项仅用于项目中的某些功能,如果不使用该功能则不需要。理想情况下,这样的功能将被拆分为一个依赖于核心功能项目的子模块......这个新的子项目只有非可选的依赖项,因为如果你决定使用子项目的功能,你需要它们。

Dependency Scope

  

依赖范围用于限制依赖项的传递性,还用于影响用于各种构建任务的类路径。

另请阅读:"optional" dependency with scope "provided" in Maven