SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
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 release
「1.0.0以上」
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("javax.jms", jms ),

javax.jms" % jms % 1.0.0 

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

(依存関係は増やさない)
全依存ライブラリの dependencyOverrides を

書いた .sbt ファイルを作ればよさそう。
lock.sbt
↓こんな内容を書き込みます
update task の結果を元に
「あ、うごきそう」
やってみて気づいたこと
• Configuration 毎に別のバージョンは

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

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

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

Weitere ähnliche Inhalte

Mehr von Takashi Kawachi

例外のlogを快適に
例外のlogを快適に例外のlogを快適に
例外のlogを快適にTakashi Kawachi
 
Elastic beanstalk と Docker と Play
Elastic beanstalk と Docker と PlayElastic beanstalk と Docker と Play
Elastic beanstalk と Docker と PlayTakashi Kawachi
 
やさしいIteratee入門
やさしいIteratee入門やさしいIteratee入門
やさしいIteratee入門Takashi Kawachi
 
Haskell超初心者勉強会20
Haskell超初心者勉強会20Haskell超初心者勉強会20
Haskell超初心者勉強会20Takashi Kawachi
 
Haskell超初心者勉強会17
Haskell超初心者勉強会17Haskell超初心者勉強会17
Haskell超初心者勉強会17Takashi Kawachi
 
Haskell超初心者勉強会14
Haskell超初心者勉強会14Haskell超初心者勉強会14
Haskell超初心者勉強会14Takashi Kawachi
 
Haskell超初心者勉強会11
Haskell超初心者勉強会11Haskell超初心者勉強会11
Haskell超初心者勉強会11Takashi Kawachi
 
Scalaでの例外処理
Scalaでの例外処理Scalaでの例外処理
Scalaでの例外処理Takashi Kawachi
 

Mehr von Takashi Kawachi (11)

例外のlogを快適に
例外のlogを快適に例外のlogを快適に
例外のlogを快適に
 
MacroPyがすごい
MacroPyがすごいMacroPyがすごい
MacroPyがすごい
 
Silhouette intro
Silhouette introSilhouette intro
Silhouette intro
 
Sbt doctest
Sbt doctestSbt doctest
Sbt doctest
 
Elastic beanstalk と Docker と Play
Elastic beanstalk と Docker と PlayElastic beanstalk と Docker と Play
Elastic beanstalk と Docker と Play
 
やさしいIteratee入門
やさしいIteratee入門やさしいIteratee入門
やさしいIteratee入門
 
Haskell超初心者勉強会20
Haskell超初心者勉強会20Haskell超初心者勉強会20
Haskell超初心者勉強会20
 
Haskell超初心者勉強会17
Haskell超初心者勉強会17Haskell超初心者勉強会17
Haskell超初心者勉強会17
 
Haskell超初心者勉強会14
Haskell超初心者勉強会14Haskell超初心者勉強会14
Haskell超初心者勉強会14
 
Haskell超初心者勉強会11
Haskell超初心者勉強会11Haskell超初心者勉強会11
Haskell超初心者勉強会11
 
Scalaでの例外処理
Scalaでの例外処理Scalaでの例外処理
Scalaでの例外処理
 

Sbt lock1