by shigemk2

当面は技術的なことしか書かない

メモ SBT人間 #ScalaMatsuri

さほど入門ではない。

  • TypeSafe社でリアクティブ関連で商用プラットフォームを作ってる

これを読めばいいです http://www.scala-sbt.org/0.13/docs/ja/Getting-Started.html

  • ここに出ていないコマンドで覚えるべきやつは、helpをつかえば
  • ターミナルを素早く出すTotalTerminal
  • サブライムとiTermで開発してる

こいつを書いておく

sbt.version=0.13.9

マルチプロジェクト/サブプロジェクト(jar)

sbtの概念

buildはsubprojectの集合体-source / libaryDependencies

依存関係で他のプロジェクトを作らないといけないので、lazy val Scala Puzzlersに書いてる

lazy val foo = (project in file("foo"))
  • sbtは、mavenとかの系統 プログラミング言語を使ってビルドを定義できる(rakeみたいなやつ)
  • その前はantを使っていた
  • さらにその前はシェルスクリプトのコマンドだった、といいつつ、makeとかgccとか 環境依存が激しい。
  • ネットにつながっていればライブラリを管理できるようになったのがCPAN/maven/rakeなど
  • ずっと一生使える

lazy valでないとbazが先に呼べない/Scalaに見えてDSLなのである

lazy val foo = (project in file("foo")),
  dependsOn(baz)
  • コンパイラのsbt
  • クロスコンパイルする理由は、数カ月ごとに新しいScalaのバージョンがあって、ライブラリに互換性がなかった
  • settingの型
  • sbtはイミュータブルなつくり

  • プラグインを書きたい人はDefaults.scalaを読むべし

  • key.scalaも

  • dependency orient program

  • ~testOnlyとか使ってみるといい