web-dev-qa-db-ja.com

scala / sbt / slf4jプロジェクトからcommons-loggingを除外する方法は?

私の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# JCLを除く ):

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

問題は、sbtで同じことをする方法ですか?

43
wks

Heikoのアプローチはおそらく機能しますが、サードパーティのlibの依存関係がダウンロードされることはありません。特定のものだけを除外する場合は、excludeを使用します。

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

または

... excludeAll( ExclusionRule(organization = "org.baz") ) // does not work with generated poms!
63
drexin

Sbt 0.13.8以降では、プロジェクトレベルの依存関係の除外を試すこともできます。

excludeDependencies += "commons-logging" % "commons-logging"
15
Eugene Yokota

追加intransitiveサードパーティライブラリの依存関係。

libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
4
Heiko Seeberger

以前同じ問題に遭遇しました。のような依存関係を追加して解決しました

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

または

libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging"))
4
lily LIU