You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven中同构件直接与间接依赖共存时的版本选择问题

Maven依赖版本冲突处理及漏洞扫描说明

核心结论

你的项目最终会采用直接声明的JUnit 4.13.1版本,漏洞扫描也只会针对这个生效版本进行检测,不会再处理被排除的4.11版本。

原因说明

Maven的依赖调解规则决定了版本优先级:

  • 直接依赖 > 间接依赖:不管pom.xml中依赖的声明顺序,显式直接声明的依赖优先级远高于通过其他依赖传递过来的间接依赖。你直接在pom里指定了JUnit 4.13.1,所以它会覆盖browserstack-local-java传递过来的4.11版本。
  • 可以通过执行命令验证实际依赖树:
    mvn dependency:tree
    
    执行后会看到输出里JUnit的版本是4.13.1,而4.11会被标注为(omitted for conflict with 4.13.1)。

漏洞扫描逻辑

漏洞扫描工具是基于Maven最终解析生成的依赖树来做检测的,只会对实际引入的生效依赖版本进行漏洞排查,被排除的间接依赖版本不会被纳入扫描范围。

内容的提问来源于stack exchange,提问作者sumit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 00:54:30