2014-09-09 18 views
18

Jak można wykluczyć zależność przechodnią globalnie? Mój projekt zależy od wielu bibliotek Twittera lub od bibliotek zależnych od bibliotek Twittera. Nie chcę slf4j-jdk14 w mojej ścieżce klas, bez względu na to (używam logback jako wiązania slf4j).Czy istnieje prosty sposób na określenie globalnego wykluczenia zależności w SBT

Obecnie zrobić to:

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

ale za każdym razem, gdy ktoś dodaje kolejną zależność, która używa slf4j-jdk14 mogę dostać go z powrotem na ścieżce klasy.

Odpowiedz

31

Dla grupy zależnościach można to zrobić w następujący sposób:

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

Aktualizacja

Od SBT 0.13.8 jest również another possibility wykluczyć zależności globalnie. Powyższy przykład można napisać znacznie bardziej kompaktowy.

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

Jednak w chwili pisania tego opisu funkcja została oznaczona jako eksperymentalna, dlatego warto mieć świadomość obu opcji.

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

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

+2

To rozwiązanie wydaje się bardziej elegancki do mnie niż jednego przyjętego – Flo354