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?
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!
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"
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"))
Ajouter intransitif votre dépendance de bibliothèque tierce partie, par exemple
libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive