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

将avro设为Runtime依赖并排除Test传递依赖失败(sbt 1.10.10)

问题诊断与解决方案

你的配置未在Test任务中生效,核心原因是Test类路径同时包含了Runtime和Test范围的avro依赖:

  • 你同时声明了avro % Runtime和avro % Test,导致Test环境下存在两份avro依赖实例
  • 对avro % Test的排除规则仅作用于Test范围的avro传递依赖,但Runtime范围的avro带来的传递依赖依然会保留在Test类路径中,所以看起来排除没生效

解决方案1:精简依赖声明(推荐)

Test范围默认会继承Runtime的依赖,因此无需重复声明Test范围的avro。只需在Runtime范围配置一次排除规则,Test任务会自动继承带排除的avro依赖:

(avro % Runtime).excludeAll(
  ExclusionRule(organization = "com.fasterxml.jackson.core"),
  ExclusionRule(organization = "org.apache.commons"),
  ExclusionRule(organization = "org.slf4j"),
)

解决方案2:排查依赖来源(如果必须保留双范围声明)

如果确实需要在Test范围单独引入avro,执行以下步骤:

  1. 运行sbt test:dependencyTree命令,查看com.fasterxml.jackson.core、org.apache.commons、org.slf4j的具体来源
  2. 确认这些依赖是否由avro之外的其他Test依赖引入:如果是,需要针对对应依赖单独添加排除规则
  3. 确保双范围的排除规则都正确配置,且无拼写错误

验证方法

修改配置后,再次运行sbt test:dependencyTree,搜索目标组织的依赖,确认它们已从avro的传递依赖中消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:21:00