Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
sbt-lock
Lock library versions for stable build
2014/3/11 #rpscala 121回
@kawachi
緩いバージョン指定問題
My Application LibA 1.0.0
org % libA % [1.0.0,)
LibA 2.0.0
書き換えていないのに
時間が経ったら

ビルド結果が変わる
!
「前は動いてたのに!」
new rel...
My Application LibA 1.0.0 LibB 1.0.0
LibB 2.0.0
ここが大丈夫でも…
こことか
ここで

問題が起きるかも…
依存関係は続くので

問題が起きる箇所を

把握するのは面倒
解決案1. exclude
• 固定したい部分を exclude して、

明示的にバージョンを指定する
• libraryDependencies ++= Seq(

"log4j" % "log4j" % "1.2.15" exclude(...
解決案2. retrieveManged
• 新品の Play! 2.2.2 scala プロジェクトで
(依存が多いと)わりと残念
バージョン指定を上書き
• dependencyOverrides += "log4j" % "log4j" % "1.2.16"
• ライブラリ毎にバージョンの指定ができる

(依存関係は増やさない)
全依存ライブラリの dependency...
lock.sbt
↓こんな内容を書き込みます
update task の結果を元に
「あ、うごきそう」
やってみて気づいたこと
• Configuration 毎に別のバージョンは

指定できなさそう
• Configuration 毎に別バージョンを使いたい
ことはある?
やってみて気づいたこと
• libraryDependencies のバージョンを

書き換えても変化がない
• dependencyOverrides で上書きしてるので

正しいが、気づきづらい
わからないこと
• lock.sbt ファイルを作った後/消した後に
reload したい
• command にすればいいのでしょうか?
• project/, project/project/ も lock すべき?
https://github.com/tkawachi/sbt-lock/
Upcoming SlideShare
Loading in …5
×

Sbt lock1

1,308 views

Published on

  • Be the first to comment

  • Be the first to like this

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/

×