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

如何在SBT中排除库的所有传递依赖?Gradle代码转SBT实现方法

嘿,这两个问题我熟,一步步给你讲清楚!

在SBT中排除某个库的所有传递依赖

在SBT里,要排除某个依赖的所有传递依赖,有两种常用的方式:

方式1:使用excludeAll直接排除所有传递项

如果你想彻底切断某个库的所有依赖传递,直接在依赖声明里加上excludeAll()就行,比如:

libraryDependencies += "com.example" % "foo-library" % "1.2.3" excludeAll()

这样这个库的任何传递依赖都不会被拉取到你的项目里。

方式2:针对特定范围排除(可选)

如果你只是想排除某个组或者某个模块的所有传递依赖,也可以精准控制,比如:

  • 排除某个组下的所有模块:
libraryDependencies += "com.example" % "bar-library" % "4.5.6" exclude("org.unwanted.group", "*")
  • 排除所有组下的某个模块:
libraryDependencies += "com.example" % "baz-library" % "7.8.9" exclude("*", "unwanted-module")
将Gradle排除依赖的代码移植到SBT

先假设你有一段Gradle代码,比如这样的(常见的排除场景):

// Gradle:排除某个库的所有传递依赖
implementation('com.example:my-lib:1.0') {
    exclude group: '*', module: '*'
}

// Gradle:排除特定组的所有传递依赖
implementation('com.example:another-lib:2.0') {
    exclude group: 'com.unwanted.deps'
}

对应的SBT代码就可以这么写:

// SBT:对应上面第一个Gradle例子,排除所有传递依赖
libraryDependencies += "com.example" % "my-lib" % "1.0" excludeAll()

// SBT:对应第二个Gradle例子,排除特定组的所有依赖
libraryDependencies += "com.example" % "another-lib" % "2.0" exclude("com.unwanted.deps", "*")

另外补充个小技巧:如果你的项目里有很多需要排除的依赖,也可以用dependencyOverrides或者全局排除规则,但一般单个依赖单独处理更清晰,避免影响其他库的正常依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:55:39