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

rei*_*kje 23 scala slf4j sbt finagle twitter-finagle

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

目前我这样做:

"com.twitter" %% "finagle-thriftmux" % "6.16.0" exclude("org.slf4j", "slf4j-jdk14")
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*ski 40

自sbt 0.13.8

在sbt 0.13.8中,有可能在全局范围内排除依赖关系.这是一个紧凑的例子:

excludeDependencies += "org.slf4j.slf4j-jdk14"
Run Code Online (Sandbox Code Playgroud)

但是,在撰写本文时,此功能被标记为实验性功能,因此了解旧解决方案是明智之举.

在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"))
Run Code Online (Sandbox Code Playgroud)


Jef*_*era 37

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

  • 这个解决方案对我来说比接受的解决方案更优雅 (3认同)

naf*_*afg 6

libraryDependencies := libraryDependencies.value.map(_.exclude("groupid", "artifactname"))
Run Code Online (Sandbox Code Playgroud)