gpt4 book ai didi

java - maven如何确定传递依赖的版本?

转载 作者:行者123 更新时间:2023-12-02 08:44:40 26 4
gpt4 key购买 nike

我正在使用maven构建一个java项目,我注意到在其中一个子项目中,包含jsonwebtoken 0.7.0。

https://github.com/WebGoat/WebGoat/blob/develop/webgoat-lessons/challenge/pom.xml

webgoat-pom

然后从maven repo ( https://repo1.maven.org/maven2/io/jsonwebtoken/jjwt/0.7.0/jjwt-0.7.0.pom ) 中,jsonwebtoken 0.7.0 具有 jackson-databind v2.8.2 的依赖项;

enter image description here

但是,当我从maven调试日志跟踪时,jackson-databind v2.10实际上是由maven拉取的。

我知道如果POM中没有明确定义组件版本,maven将默认为最新版本,但是,在上面的情况下,为什么maven仍然选择将版本覆盖为最新版本?

谢谢!

最佳答案

如果在多个位置添加依赖项,Maven 会采用以下内容:

  • 在层次结构中更接近您的 pom.xml(传递依赖与传递依赖的传递依赖)
  • 如果深度相同 - 则取第一次出现的位置。

为了保证采用哪个版本,您需要在 <dependencyManagement> 中声明它部分。这会覆盖传递依赖项中声明的任何内容。

if a component version is not explicitly defined in POM, maven would default to latest

不,如果没有显式版本,则无法定义依赖项。 Maven 虽然支持范围,但它们被认为是不好的做法,因为这会导致不可重复的构建。

关于java - maven如何确定传递依赖的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60646278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com