makotan _at_ gmail dot com

sbtはじめました

ってことで、いきなりメモ。全部ここに書いてるやつのダイジェスト
この内容は0.10.0です
http://eed3si9n.github.com/sbt-getting-started-guide-ja/
インストール方法は

brew install sbt

プロジェクトディレクトリを作って
buid.sbtファイルを作成(ほんとうはhoge.sbtでも良いらしいというか複数個あっても全部有効なのか・・・)
中身は最小限パターンはこの3つで、 単純なプロジェクトだったらここにいろいろ追加していくと
マルチプロジェクトの場合は、project/Build.scalaにいろいろ書いた方がうれしいかも

name := "test"
version := "1.0"
scalaVersion := "2.9.1"

ディレクトリ構造はこれで作る。

mkdir -p src/main/java
mkdir -p src/main/scala
mkdir -p src/main/resources
mkdir -p src/test/java
mkdir -p src/test/scala
mkdir -p src/test/resources

どうしてもダウンロードしたjarが必要ならこの辺に放り込むけど、普通はいらないと。

mkdir lib

もしかしたらもっと簡単な方法があるかも・・・ATDK



依存関係の書き方

libraryDependencies += groupID % artifactID % revision % configuration

もしくは

libraryDependencies ++= Seq(
    groupID % artifactID % revision,
    groupID % otherID % otherRevision
)

groupID % artifactID % revision % configurationの4つはIvyなので、ほぼMavenと同じと。
ってことでメモ。
Ivyでのリビジョンの書き方
http://ant.apache.org/ivy/history/2.2.0/ivyfile/dependency.html#revision
configurationはtestとからし

  • 特定の場所にあるjarに依存したいとき
libraryDependencies += "slinky" % "slinky" % "2.1" from "http://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar"
  • 依存関係から除外
libraryDependencies += "log4j" % "log4j" % "1.2.15" exclude("javax.jms", ??)
  • 依存関係から除外その2
libraryDependencies +=
  "log4j" % "log4j" % "1.2.15" excludeAll(
    ExclusionRule(organization = "com.sun.jdmk"),
    ExclusionRule(organization = "com.sun.jmx"),
    ExclusionRule(organization = "javax.jms")
  )
libraryDependencies += 
  "org.apache.felix" % "org.apache.felix.framework" % "1.8.0" withSources() withJavadocs()

リポジトリの追加方法

resolvers += name at location

これもほぼMavenと同じ。
こうやるとローカルのmavenリポジトリも追加できるのか・・・Mavenも一緒に使う人には便利・・・なのか?

resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"


ビルド定義のビルド定義
hello/*.sbt のためのビルド定義は hello/project/*.sbt でscalaを置くときは hello/project/project/*.scala
ネストするのがポイントらしい


TODO