52

我的 scala/sbt 项目使用 grizzled-slf4j 和 logback。第三方依赖项使用 Apache Commons Logging。

对于 Java/Maven,我会使用 jcl-over-slf4j 和 logback-classic,这样我就可以使用 logback 作为统一的日志后端。

我还将消除第三方库让 sbt 引入的 commons-logging 依赖项。我在 Maven 中执行以下操作(这是http://www.slf4j.org/faq.html# excludeJCL 推荐的):

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
    <scope>provided</scope>
</dependency>

问题是,如何对 sbt 做同样的事情?

4

4 回答 4

69

Heiko 的方法可能会奏效,但不会导致第 3 方库的任何依赖项被下载。如果只想排除特定的一种用途exclude

libraryDependencies += "foo" % "bar" % "0.7.0" exclude("org.baz", "bam")

或者

... excludeAll( ExclusionRule(organization = "org.baz") ) // does not work with generated poms!
于 2012-06-09T08:36:11.963 回答
28

对于 sbt 0.13.8 及以上版本,还可以尝试项目级别的依赖排除:

excludeDependencies += "commons-logging" % "commons-logging"
于 2017-05-19T20:38:44.800 回答
7

我以前遇到过同样的问题。通过添加依赖来解决它

libraryDependencies += "foo" % "bar" % "0.7.0" exclude("commons-logging","commons-logging")

或者

libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging"))
于 2016-01-27T02:49:41.967 回答
3

添加不及物您的 3rd 方库依赖项,例如

libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
于 2012-06-09T05:40:15.177 回答