Scala入門記009 sbtでマルチプロジェクト その2

私の住んでいる北海道も、雪がだいぶ溶けて春らしくなってきました。
最近はScalaのマクロを色々とさわって勉強してみたりしてします。


前回のその1ではプロジェクトのファイルが

  • Build.scala x 1
  • build.sbt x 3

の4つに分かれていました。

今回はこれをBuild.scalaの1つにまとめる設定をしてみます。
Scala入門記の目次はこちらです。


Build.scalaの設定

import sbt._
import sbt.Keys._

object ScalaSample002Build extends Build {

  lazy val projectSettings = Defaults.defaultSettings ++ Seq(
    organization := "com.xhachi.samples",
    version := "1.0",
    scalaVersion := "2.10.3",
    libraryDependencies ++= Seq(
      "org.scalatest" %% "scalatest" % "2.0" % "test"
    )
  )

  lazy val root = Project(
    id = "scala-sample-002",
    base = file("."),
    settings = projectSettings ++ Seq(
      name := "scala-sample-002"
    )
  ).dependsOn(project2)

  lazy val project1 = Project(
    id = "scala-sample-002-1",
    base = file("project1"),
    settings = projectSettings ++ Seq(
      name := "scala-sample-002-1"
    )
  )

  lazy val project2 = Project(
    id = "scala-sample-002-2",
    base = file("project2"),
    settings = projectSettings ++ Seq(
      name := "scala-sample-002-2"
    )
  ).dependsOn(project1)
}


今回は前回のrootのプロジェクトにあった

.aggregate(project1, project2)

の設定を省いていみたところEclipseのプロジェクトが3つ作成されインポートできるようになりました。
この辺りの動きは今後確認して行きたいと思います。


インポートしたらこんな感じです。
f:id:t_hachinohe:20140328165505p:plain


いいこと

Build.scalaをこう書き換えることで、他の3つのbuild.sbtは不要になります。
また、

  • organization := "com.xhachi.samples"
  • version := "1.0"
  • scalaVersion := "2.10.3"

のような共通の設定をまとめたりもできるので管理しやりやすくなります。
また、Scalaのコードなのでコンパイルエラーなどで構文チェックもできます。


まとめ

今回はとりあえずプロジェクトの設定をBuild.scalaにまとめました。
次は依存関係などを設定していこうと考えています。


Scala入門記の目次はこちらです。