当前位置: 首页 > 知识库问答 >
问题:

什么是可传递的Maven依赖项?

丁良骏
2023-03-14

这个问题将澄清什么是传递依赖,以及它在Maven中如何在非常高的级别上工作。

我的定义是:在依赖树中,比如--

若C在B中有范围编译,那个么将B声明为A的依赖项就足以用Maven构建A。但是,如果C在B中提供了作用域,那么当Maven构建A时,除非A在其依赖项中声明C,否则该构建不会根据C自动编译A。

这是正确的吗?

共有2个答案

寿和通
2023-03-14

声明项目本身时应包含的依赖项是依赖项

金嘉言
2023-03-14

你的假设是正确的。

有两种类型的Maven依赖项:

>

可传递的:这些依赖项是直接依赖项的依赖项。

提供范围为的依赖项旨在:

  • 或者从最终工件中排除(例如,对于war文件,您不希望包含servlet apiservlet jsp等)
  • 或重写——继承这些的项目定义了一个版本和/或重写了范围
 类似资料:
  • 我的情况: 我有两个独立的项目A和B。 没有项目A。 A和B使用相同的库: < li >反射-0.9.9-RC1.jar < li >番石榴-11.0.2.jar < Li > XML-API-1.0 . B2 . jar < li>javassist-3.16.1-GA.jar < li>dom4j-1.6.1.jar < li>jsr305-1.3.9.jar 我制作了项目C,这是项目a的插件

  • 主要内容:依赖传递,依赖范围,依赖范围对传递依赖的影响,依赖调节Maven 依赖传递是 Maven 的核心机制之一,它能够一定程度上简化 Maven 的依赖配置。本节我们将详细介绍依赖传递及其相关概念。 依赖传递 如下图所示,项目 A 依赖于项目 B,B 又依赖于项目 C,此时 B 是 A 的直接依赖,C 是 A 的间接依赖。 Maven 的依赖传递机制是指:不管 Maven 项目存在多少间接依赖,POM 中都只需要定义其直接依赖,不必定义任何间接依赖,Mav

  • 我们有一个项目a依赖于项目B,项目B依赖于图书馆C。a和B是本地项目,而C是maven central repo的公共图书馆。 波姆。xml用于: 波姆。用于B的xml: 在A中运行mvn dependency:tree-Dverbose时,它不会解析B的依赖项,B中使用的此类依赖项也不会显示在A的Maven依赖项中。这对于编译很好,但在运行时会因为NoClassDefFound错误而失败。 有没

  • 关于maven和传递依赖排除有几个问题。然而,我不能让它工作。我的pom中有一些依赖项,它们重新打包了一些库,以减小pom的大小。到目前为止,这是成功的。但是当我运行时,这些可传递的依赖项会被写入。类路径文件。尽管它们被排除在外,如以下摘录所示。 Apache Maven 3.3.3(7994120775791599e205a5524ec3e0dfe41d4a06;2015-04-22T13:57

  • 根据Maven依赖关系文档,所有编译依赖关系都要显式列出,而不是在编译时传递使用: 打算将[传递性编译依赖项]改为运行时范围,因此必须显式列出所有编译依赖项-但是,在某种情况下,您所依赖的库从另一个库扩展了一个类,迫使您在编译时可用。出于这个原因,编译时依赖项即使是传递的,也仍然作为编译范围。 Spring Boot有一个“启动器”依赖的概念。从Spring Boot自己的文档(以及我在Sprin

  • 我创建了一个Maven项目(可重用库),该项目有许多依赖项(编译时和运行时),它们也可以过渡地依赖于其他许多依赖项。在maven中,我可以在pom中添加依赖项。xml及其可传递依赖关系将自动处理。所以,我将毫无问题地运行。 现在,我有一个非Maven(基于Ant的)项目,上面创建的库(Maven Lib)将使用它。 在这种情况下,运行时间