Sbt lock1

805 views
683 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
805
On SlideShare
0
From Embeds
0
Number of Embeds
98
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sbt lock1

  1. 1. sbt-lock Lock library versions for stable build 2014/3/11 #rpscala 121回 @kawachi
  2. 2. 緩いバージョン指定問題 My Application LibA 1.0.0 org % libA % [1.0.0,) LibA 2.0.0 書き換えていないのに 時間が経ったら
 ビルド結果が変わる ! 「前は動いてたのに!」 new release 「1.0.0以上」
  3. 3. My Application LibA 1.0.0 LibB 1.0.0 LibB 2.0.0 ここが大丈夫でも… こことか ここで
 問題が起きるかも… 依存関係は続くので
 問題が起きる箇所を
 把握するのは面倒
  4. 4. 解決案1. exclude • 固定したい部分を exclude して、
 明示的にバージョンを指定する • libraryDependencies ++= Seq(
 "log4j" % "log4j" % "1.2.15" exclude("javax.jms", jms ),
 javax.jms" % jms % 1.0.0 
 ) exclude する箇所を探すのが大変
  5. 5. 解決案2. retrieveManged • 新品の Play! 2.2.2 scala プロジェクトで (依存が多いと)わりと残念
  6. 6. バージョン指定を上書き • dependencyOverrides += "log4j" % "log4j" % "1.2.16" • ライブラリ毎にバージョンの指定ができる
 (依存関係は増やさない) 全依存ライブラリの dependencyOverrides を
 書いた .sbt ファイルを作ればよさそう。
  7. 7. lock.sbt ↓こんな内容を書き込みます update task の結果を元に 「あ、うごきそう」
  8. 8. やってみて気づいたこと • Configuration 毎に別のバージョンは
 指定できなさそう • Configuration 毎に別バージョンを使いたい ことはある?
  9. 9. やってみて気づいたこと • libraryDependencies のバージョンを
 書き換えても変化がない • dependencyOverrides で上書きしてるので
 正しいが、気づきづらい
  10. 10. わからないこと • lock.sbt ファイルを作った後/消した後に reload したい • command にすればいいのでしょうか? • project/, project/project/ も lock すべき?
  11. 11. https://github.com/tkawachi/sbt-lock/

×