2012-06-09 9 views
37

Il mio progetto scala/sbt utilizza grizzled-slf4j e logback. Una dipendenza di terze parti utilizza Apache Commons Logging.Come escludere la registrazione commons da un progetto scala/sbt/slf4j?

Con Java/Maven, vorrei utilizzare jcl-over-slf4j e logback-classic in modo da poter utilizzare il logback come backend di registrazione unificato.

Vorrei anche di eliminare la dipendenza commons-logging che di terze parti lib avrebbe lasciato SBT tirare in I effettuare le seguenti operazioni in Maven (che è consigliato da http://www.slf4j.org/faq.html#excludingJCL):.

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1.1</version> 
    <scope>provided</scope> 
</dependency> 

E la domanda è , come fare lo stesso con sbt?

risposta

55

di approccio Heiko probabilmente funzionerà, ma porterà a nessuna delle dipendenze del 3 ° lib partito per essere scaricati. Se si desidera escludere solo uno specifico, utilizzare exclude.

libraryDependencies += "foo" % "bar" % "0.7.0" exclude("org.baz", "bam") 

o

... excludeAll(ExclusionRule(organization = "org.baz")) // does not work with generated poms! 
+25

Funziona. E la mia soluzione finale è 'libraryDependencies ++ = Seq (...). Map (_. Exclude (" commons-logging "," commons-logging "))' – wks

+3

La documentazione per questo è qui: http: // www .scala-sbt.org/release/docs/Dettagliate-Argomenti/Gestione librerie # exclude-transitive-dependencies –

+0

In realtà 'ExclusionRule' e non' ExclusionRules' – jeffreyveon

2

Aggiungi intransitivo la dipendenza della libreria di terze parti, ad es.

libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive 
+7

downvoted, causa può portare a problemi quando si dispone di più di una dipendenza di terze parti, come notato drexin, mi dispiace. –

+0

Questa soluzione ha funzionato per me (ha rimosso tutte le dipendenze di terze parti per 1 dipendenza esplicita). –

4

Ho incontrato lo stesso problema prima. Risolto con l'aggiunta di dipendenza come

libraryDependencies += "foo" % "bar" % "0.7.0" exclude("commons-logging","commons-logging") 

o

libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging")) 
8

Per SBT 0.13.8 e, soprattutto, si può anche provare l'esclusione a livello di progetto dipendenza:

excludeDependencies += "commons-logging" % "commons-logging" 
Problemi correlati