scala sbt slf4j

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"