Cómo excluir commons-logging de un proyecto scala/sbt/slf4j?
(4)
Mi proyecto scala / sbt usa grizzled-slf4j y logback. Una dependencia de terceros utiliza Apache Commons Logging.
Con Java / Maven, usaría jcl-over-slf4j y logback-classic para poder usar el logback como back-end de registro unificado.
También eliminaría la dependencia de registro común que la biblioteca de terceros dejaría sbt. Hago lo siguiente en Maven (recomendado por 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>
Y la pregunta es, ¿cómo hacer lo mismo con sbt?
Agregue intransitiva su dependencia de biblioteca de terceros, por ejemplo
libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
El enfoque de Heiko probablemente funcione, pero dará lugar a que no se descargue ninguna de las dependencias de la lib de terceros. Si solo desea excluir una exclude
uso específico.
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("org.baz", "bam")
o
... excludeAll( ExclusionRule(organization = "org.baz") ) // does not work with generated poms!
Me encontré con el mismo problema antes. Lo resolvió agregando dependencia como
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("commons-logging","commons-logging")
o
libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging"))
Para sbt 0.13.8 y superior, también puede probar la exclusión de dependencia a nivel de proyecto:
excludeDependencies += "commons-logging" % "commons-logging"