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