覆盖maven中的传递版本依赖
Posted
技术标签:
【中文标题】覆盖maven中的传递版本依赖【英文标题】:Overriding transitive version dependency in maven 【发布时间】:2020-12-13 17:10:26 【问题描述】:在maven中使用<properties></properties
标签覆盖传递依赖需要满足哪些条件?例如,在这个示例 github 项目 (https://github.com/Richou/swagger-codegen-maven-plugin) 中,我想通过在父 pom 中的 <properties>
标记内定义所需版本来覆盖 swagger-codegen 中使用的 slf4j-ext 版本。这样做的条件是什么?
注意:我知道<dependencyManagement>
可用于此目的,但我想更好地了解版本覆盖以及 pom 的工作原理。
【问题讨论】:
我猜你不能覆盖传递依赖的属性,但我真的不确定。 您只能通过将这些依赖项添加到项目中来覆盖项目的直接依赖项。这也可以通过直接向您的项目添加依赖项来实现。该决定取决于您的项目与依赖项之间的距离。 【参考方案1】:通常您需要通过标记到特定版本来定义传递依赖。
让我们说:
-
您希望的依赖项需要更新的传递依赖项。
在这种情况下,您遇到了新依赖项的问题。
您希望的依赖项需要一个较旧的传递依赖项
在这种情况下,您希望使用或根本不使用更新的依赖项
您需要升级依赖项本身的传递依赖项吗?
在这种情况下,排除依赖项并将其添加为您自己的依赖项
在第一种情况下,您可以使用此处解释的依赖排除 https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html#dependency-exclusions
在后一种情况下,您需要验证您的传递依赖是否有效,或者您是否还需要排除传递依赖。
升级
【讨论】:
我不是在寻找依赖排除。我需要项目中的传递依赖项,但只需要升级该依赖项的版本而不更改基本依赖项的版本。我还需要<dependencyManagement>
以外的方法来执行此操作,因此我指定使用<properties>
仍不完全清楚。您可以排除传递依赖项并将其添加为您自己的依赖项。在上面的答案中也添加了这个。
让我给你更好的背景。我正在询问以下链接link 中给出的解决方法和修复中的选项 2。我在我的问题链接中给出的 github 项目中尝试了这个,但它没有用。我想知道为什么。
我认为这可能会有所帮助。 andresalmiray.com/maven-dependencies-pop-quiz-results以上是关于覆盖maven中的传递版本依赖的主要内容,如果未能解决你的问题,请参考以下文章