如何全局排除一个传递性依赖项?我的项目依赖于许多Twitter库或依赖于Twitter库的库。无论如何,我都不想在类路径中使用slf4j-jdk14
(我使用logback作为slf4j绑定)。
目前我这样做:
"com.twitter" %% "finagle-thriftmux" % "6.16.0" exclude("org.slf4j", "slf4j-jdk14")
但每当有人添加另一个使用slf4j-jdk14
的依赖项时,我可能会再次将其添加到类路径中。
如何全局排除一个传递性依赖项?我的项目依赖于许多Twitter库或依赖于Twitter库的库。无论如何,我都不想在类路径中使用slf4j-jdk14
(我使用logback作为slf4j绑定)。
目前我这样做:
"com.twitter" %% "finagle-thriftmux" % "6.16.0" exclude("org.slf4j", "slf4j-jdk14")
但每当有人添加另一个使用slf4j-jdk14
的依赖项时,我可能会再次将其添加到类路径中。
自 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"))
libraryDependencies := libraryDependencies.value.map(_.exclude("groupid", "artifactname"))