私の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で同じことをする方法ですか?
Heikoのアプローチはおそらく機能しますが、サードパーティのlibの依存関係がダウンロードされることはありません。特定のものだけを除外する場合は、exclude
を使用します。
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("org.baz", "bam")
または
... excludeAll( ExclusionRule(organization = "org.baz") ) // does not work with generated poms!
Sbt 0.13.8以降では、プロジェクトレベルの依存関係の除外を試すこともできます。
excludeDependencies += "commons-logging" % "commons-logging"
追加intransitiveサードパーティライブラリの依存関係。
libraryDependencies += "foo" %% "bar" % "1.2.3" intransitive
以前同じ問題に遭遇しました。のような依存関係を追加して解決しました
libraryDependencies += "foo" % "bar" % "0.7.0" exclude("commons-logging","commons-logging")
または
libraryDependencies += "foo" % "bar" % "0.7.0" excludeAll(ExclusionRule(organization = "commons-logging"))