Scalaでビルドツールであるsbtを使っていて、そういえばsbtコマンドはグローバルのものを使っているけど、プロジェクトごとにバージョンを変えたかったらどうすればいいんだろうと疑問に思っていた。よくよく調べてみると、そもそもsbtの標準機能としてプロジェクト単位でバージョンを変える機能はもともと組み込まれていた。今日はそのことについてメモ。
https://www.scala-sbt.org/1.0/docs/ja/Basic-Def.htmlに書いてあるとおり!sbt.version=1.1.1と書けば、グローバルにはsbt 0.13を使っていても、そのプロジェクトでは1.1.1を使ってくれる。
$ echo 'sbt.version=1.1.1' > project/build.properties $ sbt Getting org.scala-sbt sbt 1.1.1 ...
グローバルのsbtが、sbt 1.1.1をゲットしてきてそれを使っているというのが面白い。
これまでperlではplenvを使って.perl-versionとか使ってプロジェクト自体の言語のバージョン変えたり、nodeはndenvでとかやっていく世界観だった。けれど、sbt使ってると標準で、sbt自体のバージョンも、scalaのバージョンも決められるのが便利だなーという感想を持った。便利!!