【问题标题】:Is there a simple way to specify a global dependency exclude in SBT是否有一种简单的方法可以在 SBT 中指定全局依赖排除
【发布时间】:2014-11-03 01:38:18
【问题描述】:

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

目前我这样做:

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

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

【问题讨论】:

    标签: scala sbt slf4j finagle twitter-finagle


    【解决方案1】:

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

    【讨论】:

    • 这个解决方案对我来说似乎比公认的更优雅
    • 接受的答案是在 sbt 中没有此解决方案时编写的。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      libraryDependencies := libraryDependencies.value.map(_.exclude("groupid", "artifactname"))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-19
        • 2010-12-03
        • 2016-07-30
        • 2014-01-22
        • 2011-05-27
        相关资源
        最近更新 更多