什么是 "optional" 依赖关系以区别于必需的包依赖关系?为什么可以将特定包作为可选项添加到项目中?

What is an "optional" dependency as distinguished from a required package dependency? Why might one add a particular package to a project as optional?

人们可以将软件依赖性描述为在特定包或项目中使用的一些代码或库,如果没有所需的依赖性,就无法将项目打包为功能齐全的程序。 'optional dependency' 对新手软件工程师来说听起来很矛盾——例如一个项目既依赖特定包,但依赖也是可选并且不是严格要求的。

可选依赖项对于您的项目不是可选的,但是当另一个项目依赖于您的项目时,这些现在可传递的依赖项已 ignored/not 得到解决。您可以为并非总是需要的功能执行此操作,并减轻上游项目的负担 https://blog.gradle.org/optional-dependencies

这不同于始终需要依赖项的“已提供”范围,但它取决于环境以使其可用。依赖项未部署/在您的发行版中不需要。