Mon projet scala/sbt utilise grizzled-slf4j et logback. Une dépendance tierce utilise la journalisation Apache Commons.
Avec Java/Maven, j'utiliserais jcl-over-slf4j et logback-classic pour pouvoir utiliser logback comme backend de journalisation unifiée.
J'éliminerais également la dépendance de journalisation des biens communs que la bibliothèque tierce laisserait sbt entrer. Je fais ce qui suit dans Maven (qui est recommandé par http://www.slf4j.org/faq.html# hors JCL ):
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
Et la question est, comment faire de même avec sbt?
L'approche de Heiko fonctionnera probablement, mais ne conduira à aucune des dépendances de la bibliothèque tierce à télécharger. Si vous ne souhaitez en exclure qu'un en particulier, utilisez exclude
.
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("org.baz", "bam")
ou
... excludeAll( ExclusionRule(organization = "org.baz") ) // does not work with generated poms!
Pour sbt 0.13.8 et supérieur, vous pouvez également essayer l'exclusion de dépendance au niveau du projet:
excludeDependencies += "commons-logging" % "commons-logging"
Ajoutez intransitif votre dépendance de bibliothèque tierce, par exemple.
libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
J'ai rencontré le même problème avant. Résolu en ajoutant des dépendances comme
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("commons-logging","commons-logging")
ou
libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging"))