Maven中的传递依存关系

时间:2018-10-09 11:01:58

标签: maven

我已经阅读了有关Maven中的传递依赖的信息,但这使我有点困惑。谁能解释一下Maven中的传递依存关系以及优缺点。预先感谢。

2 个答案:

答案 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了解到您可能需要更多高级功能,因此,它提出了几种与依赖关系相关的机制,例如依赖关系管理,中介,作用域,排除和可选。

例如,

依赖管理是一项非常受欢迎的功能,因为它可以强制执行一个项目或一组项目使用的依赖版本。
排除允许您从项目中排除传递依赖。此功能对于管理依赖项不兼容很有用。 等等...