我已经阅读了有关Maven中的传递依赖的信息,但这使我有点困惑。谁能解释一下Maven中的传递依存关系以及优缺点。预先感谢。
答案 0 :(得分:2)
开始非常简单。假设您正在使用Tika lib之类的库。因此,您可以通过以下方式在pom文件中定义一个依赖项来表达这一点:
<project...>
<dependencies>
<dependency>
<groupId>..</groupId>
<artfaictId>tika-core</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
</project>
Tika库本身也具有依赖性,这意味着用their pom file表示的Tika a依赖性,这些依赖性称为Transitive Dependencies
。
简单的优点是您无需考虑传递依赖项。这意味着您只需要考虑:我想使用Tika lib ,而不必担心它们的依赖性...
因此,如果在代码中使用Tika核心类,则可以使用依赖项。有关最佳做法的一个技巧是:如果您使用的是传递依赖的类,而不是将其设置为直接依赖(将其添加到pom文件中)。
答案 1 :(得分:1)
function namesAsOrgs({ includeOpportunities, orgSubSidNames }) {
return orgSubSidNames.map((name, i) => {
return {
label: name,
value: `${i}`,
selected: !includeOpportunities
}
})
}
console.log(namesAsOrgs({
includeOpportunities: true,
orgSubSidNames: ['a', 'b', 'c', 'd', 'f', 'g']
}))
文档假定您已经知道什么是传递依存关系。事实并非如此!因此,让我们潜入...
传递依赖为
Maven
就这么简单。
A depends on B
B does not depend on A
B depends on C
==> Therefore A depends on C
非常擅长管理依赖项!来自Maven documentation:
Maven通过自动包含传递性依赖关系,避免了发现和指定您自己的依赖关系所需的库的需求。
因此大多数时候您都不必为之烦恼。
但是,Maven
了解到您可能需要更多高级功能,因此,它提出了几种与依赖关系相关的机制,例如依赖关系管理,中介,作用域,排除和可选。
依赖管理是一项非常受欢迎的功能,因为它可以强制执行一个项目或一组项目使用的依赖版本。
排除允许您从项目中排除传递依赖。此功能对于管理依赖项不兼容很有用。
等等...