我的scala / sbt项目使用了grizzled-slf4j和logback。第三方依赖项使用Apache Commons Logging。
使用Java / Maven,我会使用jcl-over-slf4j和logback-classic,这样我就可以使用logback作为统一的日志记录后端。
我还会消除第三方lib允许sbt拉入的commons-logging依赖。我在Maven中执行以下操作(由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>
问题是,如何对sbt做同样的事情?
答案 0 :(得分:63)
Heiko的方法可能会起作用,但会导致第三方lib的依赖关系无法下载。如果您只想排除特定的一个,请使用exclude
。
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("org.baz", "bam")
或
... excludeAll( ExclusionRule(organization = "org.baz") ) // does not work with generated poms!
答案 1 :(得分:14)
对于sbt 0.13.8及更高版本,您还可以尝试项目级依赖项排除:
excludeDependencies += "commons-logging" % "commons-logging"
答案 2 :(得分:4)
添加不及物您的第三方库依赖关系,例如
libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
答案 3 :(得分:4)
之前我遇到过同样的问题。通过添加依赖性来解决它,如
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("commons-logging","commons-logging")
或
libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging"))