sbtで同じライブラリの異なるversionが複数存在するのを検知する方法

sbtのversionは0.12.2です(0.12系なら同じだと思いますが)

conflictWarning := ConflictWarning.strict("global")


conflictWarningというKeyあるんですね。ちなみに、sbt0.12.2のデフォルトでは、ほとんど警告を出してくれません*1

https://github.com/sbt/sbt/blob/v0.12.2/main/Keys.scala#L312

上記の書き方はおそらく一番制限が厳しい書き方で、1つでもconflictしてるとエラーにしてくれて、そもそもコンパイルにさえ進みません。警告のログは出しておきたいけれど、とりあえず先にすすめるようにしたい場合は、failOnConflictをfalseにすればいいはずです

conflictWarning := ConflictWarning.strict("global").copy(failOnConflict = false, level = Level.Warn)

もしくはfilterを調節すると、ライブラリ毎に細かく調節できるようです

https://github.com/sbt/sbt/blob/v0.12.2/ivy/ConflictWarning.scala

ちなみに、sbtのissue欄の議論で知りました。

sbt/sbt issue 603 "sbt should reject projects with dependencies on multiple versions of the same artifact"

ちゃんと読んでないですが、このissueによって、sbt0.13からある程度挙動変わる(というかKeyが増える)予定なんですかね(?)

*1: scala関連もしくはsbtのみ出すようになってる? https://github.com/sbt/sbt/blob/v0.12.2/ivy/ConflictWarning.scala#L12