menu
書いてる野郎
orebike@gmail.com
公式のチュートリアルを見たところ、Getting Started with sbt — Directory structure
このような構成にしとかないといけないと。そんでこれは Maven と同じだよと。
src/
main/
resources/
<files to include in main jar here>
scala/
<main Scala sources>
java/
<main Java sources>
test/
resources
<files to include in test jar here>
scala/
<test Scala sources>
java/
<test Java sources>
この構成を全部素手でまず作ってみる
$ mkdir src $ cd src $ mkdir main $ mkdir test $ cd main/ $ mkdir resources $ mkdir java $ mkdir scala $ cd .. $ cd test $ mkdir resources $ mkdir java $ mkdir scala
こうなった
src
├── main
│ ├── java
│ ├── resources
│ └── scala
└── test
├── java
├── resources
└── scala
つまり動くところを作る
適当にパッケージを作って
src
├── main
│ ├── java
│ ├── resources
│ └── scala
│ └── jp
│ └── co
│ └── sample
│ └── hogehoge
│ └── Main.scala
└── test
├── java
├── resources
└── scala
このような構成にする。
Main.scala は
package jp.co.sample.hogehoge object Main { def main(args:Array[String]) = { println("hogehoge") } }
こんな感じで・・・
何もなしでプロジェクトのルートディレクトリでおもむろに
$ sbt run ... [info] Running jp.co.sample.hogehoge.Main hogehoge
動いた。ディレクトリには勝手に target というディレクトリが作成されている。ここにコンパイル結果が格納されるようだ
ビルドの定義ファイルを作成する。 Maven ならば書くのがクソややこしい pom ファイルにあたるのだろう
チュートリアルを読むとプロジェクトのルートに build.sbt を作る。
中にとりあえず
lazy val root = (project in file(".")). settings( name := "hogehoge", version := "1.0", scalaVersion := "2.11.4" )
このように書く。どう見ても設定ファイルじゃなくて設定ファイル風の Scala コードである。
再び実行してみる
$ sbt run
そうすると scalaVersion を指定したせいか、このバージョンの Scala コンパイラ を自動ダウンロードしてきている。
コンパイルされて、実行OK
では微妙にバージョンを変えてみる
lazy val root = (project in file(".")). settings( name := "hogehoge", version := "1.0", scalaVersion := "2.11.7" )
再び実行してみる
$ sbt run
やはり指定したバージョンのコンパイラをダウンロードしにいく。これはスゴイ。
build.sbt の設定を書いて実行するとプロジェクトのルートディレクトリに project という名前のディレクトリが勝手に出来上がる
build.sbt で出来上がった project ディレクトリの中に build.properties というファイルを作る
中にこのように書いてビルドに使用する sbt 自体のバージョンを指定する
sbt.version=0.13.9
動かしてみる
$ sbt run
普通に動いた。ではバージョンを微妙に戻してみる
sbt.version=0.13.7
何やら取りに行っているようだ。
$ sbt run Getting org.scala-sbt sbt 0.13.7 ...
正しく実行された。
バージョン戻してもう一度実行してみる。今度はダウンロード済なのでサラリと終わる。
実行しないでコンパイルだけしてみる
$ sbt compile
できた。
今までイロイロビルドして何かイロイロ出来上がってきてたので今一度
├── build.sbt
├── project
│ └── build.properties
└── src
├── main
│ ├── java
│ ├── resources
│ └── scala
│ └── jp
│ └── co
│ └── sample
│ └── hogehoge
│ └── Main.scala
└── test
├── java
├── resources
└── scala
この状態からコンパイルしてみる OK、target と project/target が出来上がることを確認