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

Mon scala/sbt projet utilise grisonnant-slf4j et logback. Une dépendance à une tierce partie utilise la journalisation Apache Commons.

avec Java / Maven, j'utiliserais jcl-over-slf4j et logback-classic pour pouvoir utiliser logback comme support de journalisation unifié.

j'éliminerais aussi la dépendance de la connexion commons que le tiers lib laisserait à sbt. Je ne le suit dans Maven (ce qui est recommandé par 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>

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

39
demandé sur wks 2012-06-09 07:51:12

4 réponses

L'approche de Heiko fonctionnera probablement, mais ne conduira à aucune des dépendances de la lib tierce partie à télécharger. Si vous ne voulez exclure qu'un usage 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!
61
répondu drexin 2013-03-12 12:53:04

pour sbt 0.13.8 et plus, vous pouvez aussi essayer l'exclusion de dépendance au niveau du projet:

excludeDependencies += "commons-logging" % "commons-logging"
11
répondu Eugene Yokota 2017-05-19 20:38:44

j'ai rencontré le même problème avant. Résolu en ajoutant la 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"))
4
répondu lily LIU 2016-01-27 02:49:41

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

libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
3
répondu Heiko Seeberger 2012-06-09 05:40:15