LoginSignup
0
1

More than 5 years have passed since last update.

sbt 1.2.0以降にアップグレードしたらlibrary eviction warningが頻繁に出るようになってしまった場合の対処法

Last updated at Posted at 2019-01-19

現象

SBTのversion conflict(s)解消方法まとめ - Qiita
に書かれた方法などでライブラリの衝突(conflict)を解決していたのに、sbtのバージョンを1.2.0以降に上げたら次のwarningが頻繁に出るようになってしまった。

[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.

原因

sbt 1.2.0で導入されたwarnEvictionSummaryという機能の実装が少しまずいのが原因。
warnを出すべきでないバージョン衝突1までwarningを出してしまっている。

解決策

上記の修正が含まれたバージョンのsbtが出るまでは以下を build.sbt2 に書くことでwarningを抑制できる。

evictionWarningOptions in update := EvictionWarningOptions.default.withWarnEvictionSummary(false)

これでeviction warning summaryがでなくなるんじゃないかと心配かもしれないが、
https://github.com/sbt/librarymanagement/blob/v1.2.4/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala#L317
の実装上eviction summaryが有効だろうが無効だろうがbinary compatibilityがない危険なconflictはどちらにしろwarningが出るので安心していい。

逆に上の修正が入ったあとのバージョンのsbtでは本当にeviction summaryがでなくなってしまうので、この設定は必ず取り除くこと。


  1. 明文化された記述が残念ながら見つけられないものの、ドキュメント内の間接的な記述およびコード実装から察するにsbtは扱うライブラリがセマンティックバージョニングに沿っていることを期待した上で、セマンティックバージョニングに沿っているなら互換性が破壊されないはずのマイナーバージョン、マイナーマイナーバージョンのバージョンconflictは特に警告を出さずにより新しい方のバージョンを取得している。 

  2. メタプロジェクトのupdateでも警告が出ている場合は project/build.sbt にも書くこと 

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1