web-dev-qa-db-ja.com

SBTでグローバル依存関係除外を指定する簡単な方法はありますか

推移的な依存関係をグローバルにどのように除外しますか?私のプロジェクトは、多くのTwitterライブラリーまたはTwitterライブラリーに依存するライブラリーに依存しています。何があっても、クラスパスにslf4j-jdk14を使用したくありません(slf4jバインディングとしてlogbackを使用しています)。

現在私はこれをしています:

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

しかし、誰かがslf4j-jdk14を使用する別の依存関係を追加するたびに、それをクラスパスに戻す可能性があります。

25
reikje

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

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

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