是否有一种简单的方法可以在SBT中指定全局依赖项排除

时间:2014-09-09 15:01:40

标签: scala sbt slf4j finagle twitter-finagle

您如何在全球范围内排除传递依赖?我的项目取决于许多Twitter库或依赖于Twitter库的库。我不想在我的类路径中slf4j-jdk14,无论如何(我使用logback作为slf4j绑定)。

目前我这样做:

"com.twitter" %% "finagle-thriftmux" % "6.16.0" exclude("org.slf4j", "slf4j-jdk14")

但每次有人添加另一个使用slf4j-jdk14的依赖项时,我可能会将其恢复到类路径中。

3 个答案:

答案 0 :(得分:38)

自sbt 0.13.8

在sbt 0.13.8中,possibility可以全局排除依赖关系。这是一个紧凑的例子:

excludeDependencies += "org.slf4j.slf4j-jdk14"

然而,在撰写本文时,此功能已标记为实验性,因此明智地了解旧解决方案。

在sbt 0.13.8之前

对于一组依赖项,您可以按如下方式执行:

libraryDependencies ++= Seq(
  "com.twitter" %% "finagle-thriftmux" % "6.16.0",
  "com.twitter" % "lib" % "2.0",
  "com.domain" % "some-other-lib" % "1.0"
).map(_.exclude("org.slf4j", "slf4j-jdk14"))

答案 1 :(得分:34)

excludeDependencies += "org.slf4j" % "slf4j-jdk14"

答案 2 :(得分:5)

libraryDependencies := libraryDependencies.value.map(_.exclude("groupid", "artifactname"))