在SBT中,有没有一种简单的方式来指定全局依赖项排除?

34

如何全局排除一个传递性依赖项?我的项目依赖于许多Twitter库或依赖于Twitter库的库。无论如何,我都不想在类路径中使用slf4j-jdk14(我使用logback作为slf4j绑定)。

目前我这样做:

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

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

3个回答

50
<最初的回答> 在这段代码中,我们将"org.slf4j" % "slf4j-jdk14"添加到了excludeDependencies中。

3
我认为这个解决方案比已接受的方案更优美。 - Flo354
当这个解决方案在sbt中不可用时,被接受的答案已经编写了。 - Daniel Olszewski

49

自 sbt 0.13.8 版本以来

在 sbt 0.13.8 中,有一个可能性可以全局排除依赖关系。以下是一个简洁的示例:

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"))

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接