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

Maven test依赖移除uberjar中传递性compile依赖的异常问题

Maven依赖作用域覆盖传递依赖的行为解析

这是Maven的正常预期行为,完全符合它的依赖调解规则,不是bug。

核心原因:

  • Maven会优先采用项目pom中显式声明的依赖配置,而非传递过来的依赖配置。当你自己在pom里把com.squareup.okhttp3:okhttp设为test作用域时,这个显式声明会覆盖splunk-appender传递过来的compile作用域配置。
  • test作用域的依赖仅在编译测试代码、运行测试用例阶段生效,不会被打包到生产环境的jar包中。而Spring Boot Maven插件的打包逻辑,默认只会包含compile和runtime作用域的依赖,所以okhttp会被排除。
  • 当你移除自己加的test依赖后,Maven会使用splunk-appender传递过来的compile作用域配置,okhttp自然会被包含到最终jar里。

解决方案:

  • 如果你的生产代码(比如splunk-appender运行时)需要okhttp,不要自己显式声明okhttp为test依赖,让传递依赖的compile作用域自然生效即可。
  • 如果只是测试代码需要okhttp(比如单独的测试场景),可以显式声明test作用域,但这不会影响生产环境的依赖——生产环境依然使用splunk-appender传递的compile版本,Maven会区分作用域加载依赖。

内容的提问来源于stack exchange,提问作者Mr. Gung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:05:19