You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

同一pom.xml中两个不同scope的commons-codec依赖如何去重?

关于Maven重复依赖的冗余处理问题

嘿,这个问题我太清楚了,直接给你说结论:你应该删除带有runtime scope的那个依赖,原因如下:

  • 先明确两个scope的核心差异:

    • 不带scope的依赖默认是compile scope:这个依赖会参与项目的编译、测试、运行三个完整阶段,是Maven最常用的依赖范围。
    • runtime scope的依赖:仅在测试和运行阶段生效,编译阶段不会把这个依赖引入到classpath里。
  • 当pom.xml中出现groupId和artifactId完全相同的重复依赖时,Maven会遵循依赖调解规则:如果都是直接依赖(像你这种情况),后声明的依赖会覆盖先声明的。但不管顺序如何,保留compile范围的依赖更合理——除非你的项目编译阶段完全不需要用到commons-codec的任何类(这种情况很少见,毕竟commons-codec的工具类大多会在编译时被调用)。

  • 保留冗余依赖只会让pom.xml变得臃肿,还容易让其他维护者产生误解,所以删掉runtime版本的依赖是最优选择。

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

火山引擎 最新活动