Comment exclure commons-logging d’un projet scala / sbt / slf4j?

Mon projet scala / sbt utilise grizzled-slf4j et logback. Une dépendance tierce utilise Apache Commons Logging.

Avec Java / Maven, j’utiliserais jcl-over-slf4j et logback-classic pour que je puisse utiliser logback comme backend de journalisation unifié.

J’éliminerais également la dépendance à l’enregistrement commun que la librairie tierce laisserait entrer. Je fais ce qui suit dans Maven (recommandé par http://www.slf4j.org/faq.html#excludingJCL ):

 commons-logging commons-logging 1.1.1 provided  

Et la question est, comment faire la même chose avec sbt?

L’approche de Heiko fonctionnera probablement, mais ne mènera à aucun téléchargement des dépendances de la librairie tierce. Si vous souhaitez uniquement exclure une utilisation spécifique, 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" 

J’ai rencontré le même problème avant. Résolu en ajoutant une dépendance comme

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

ou

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

Ajouter intransitif votre dépendance de bibliothèque tierce, par exemple

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