Maven 具有可传递多模块依赖项的依赖项管理

Maven 具有可传递多模块依赖项的依赖项管理,maven,Maven,我有一个父模块a和一个子模块B。 B依赖于库C,可传递地依赖于D.version1(因此我不能直接更改版本) 因为D.version1有一个CVE漏洞,我想将D更改为version2,它与以前的版本可追溯兼容 现在,B是模块E的依赖项 为什么模块E中的D版本已回滚到版本1 如果这是真实的行为,我如何从A/B覆盖D版本 如果您希望以这种方式定义,您必须直接在您自己的项目中定义工件的版本,该版本始终优先于通过依赖关系树(最近的wins策略)得到的版本。事实上,我想知道是否有另一种方法可以做

我有一个父模块a和一个子模块B。 B依赖于库C,可传递地依赖于D.version1(因此我不能直接更改版本)

因为D.version1有一个CVE漏洞,我想将D更改为version2,它与以前的版本可追溯兼容

现在,B是模块E的依赖项

  • 为什么模块E中的D版本已回滚到版本1

    • 如果这是真实的行为,我如何从A/B覆盖D版本

如果您希望以这种方式定义,您必须直接在您自己的项目中定义工件的版本,该版本始终优先于通过依赖关系树(最近的wins策略)得到的版本。事实上,我想知道是否有另一种方法可以做到这一点。DependencyManager条目将战胜依赖项版本的所有可传递定义。因此,如果您将D的DependencyManager设置为版本2,并且您既没有对D的直接依赖项,也没有对D的其他DependencyManager条目,则D将拥有版本2。这是一个比添加不必要的直接依赖项更干净的策略。