web-dev-qa-db-fra.com

Comment exclure la journalisation des biens communs d'un projet scala / sbt / slf4j?

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?

43
wks

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!
63
drexin

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"
15
Eugene Yokota

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

libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
4
Heiko Seeberger

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"))
4
lily LIU