![]() |
2012年2月 1日Simple-Build-Toolで始めるScala開発(第3回) |
![]() |
2011年11月24日Simple-Build-Toolで始めるScala開発(第2回) |
![]() |
2011年7月 5日Simple-Build-Toolで始めるScala開発(第1回) |
![]() |
2010年4月12日Javaインストーラ「IzPack」応用編:UserInputPanelのチェックボックスクリック時のvalidator不具合 |
![]() |
2009年12月 8日Javaインストーラ「IzPack」応用編:HTMLLicencePanel中のリンクをクリックしたときに登録済みのブラウザで表示させる |
![]() |
2009年11月27日Javaインストーラ「IzPack」応用編:Codehaus IzPackの紹介 |
![]() |
2009年11月25日マルチプラットフォーム対応のインストーラ「IzPack」でインストーラを作成しよう!(第4回) |
![]() |
2009年11月18日マルチプラットフォーム対応のインストーラ「IzPack」でインストーラを作成しよう!(第3回) |
![]() |
2009年11月17日.NET Framework を理解する。(第3回) |
![]() |
2009年10月28日.NET Framework を理解する(第2回) |
Simple-Build-Toolで始めるScala開発(第2回)
2011年11月24日
はじめに
また、 Maven を使用した開発から移行する際に参考となるポイントについても解説します。 (本記事では sbt 0.11.1、 JDK 1.6.0_24 を使用しています。)
sbt による基本的なビルド定義方法
sbt でのビルド定義方法
sbt でのビルド定義方法として、以下の2つの方法があります。
- ベースディレクトリ内の拡張子が .sbt のファイルに定義
- project ディレクトリ内の拡張子が .scala のファイルに定義
1. の方法は、基本的なビルド管理に必要な最低限の設定のみが
できるようになっています。通常はこちらのみの使用で特に問題ありません。
2. の方法は、sbt をscalaコードによってさらにカスタマイズして使用したり、「プロジェクト」という
概念を使用してより便利にビルド管理ができるようになっています。
今回は 1. の .sbt ファイルを使用した基本的なプロジェクト管理について解説します。
build.sbt ファイルを使用した sbt 設定方法
長々と説明するよりも、実際の.sbt ファイルによる設定例を示した方がわかりやすいので、 以下では実際にプロジェクト管理を行いながら具体的に説明します。
プロジェクトディレクトリの構成
build.sbt ファイルは、プロジェクトディレクトリの直下に配置します。
プロジェクトディレクトリについては、前回の連載を参考にしてください。
build.sbt ファイルを追加したプロジェクトの構成は、以下のようになります。
.
├── build.sbt
├── bin
│ ├── sbt
│ ├── sbt-launch.jar
│ └── sbt.bat
└── src
├── main
│ └── scala
└── test
└── scala
build.sbt ファイルの基本的な設定例
build.sbt の基本的な設定例を以下に示します。
build.sbtname := "sbt-sample" version := "0.1" scalaVersion := "2.9.1"
上記の設定で build.sbt を保存後に sbt を起動すると、プロジェクト名が sbt-sample 、プロジェクトのバージョンが0.1 、プロジェクト内でビルド時に使用される Scala のバージョンが2.9.1に設定されて起動されます。
また、 .sbt ファイルで設定を行うためには、設定ごとに空行を1つ以上挟まなくてはいけないルールがあるので注意が必要です。
sbt を既に起動している場合、下記のように reload コマンドを行うことで、build.sbt などに書かれているプロジェクトの設定を読み込み直すことができます。
sbt によるライブラリ依存関係の解決方法
続いて、プロジェクトで使用するライブラリの依存関係を解決する方法を解説します。
sbt では、ライブラリの依存関係を解決する方法として、以下の2つの方法があります。
- プロジェクトディレクトリの中にlibを作成し、その中に依存するライブラリの jar ファイルを配置する
- sbt の設定ファイルの中で libraryDependencies を設定する
1. の方法は、 Maven などのリポジトリに登録されていない独自ライブラリなどを使用する際に使用します。(ビルドの際、自動的にクラスパスが設定されます。)
本記事では、2. の libraryDependencies を使用した方法を解説します。
この方法の場合、 Maven の設定で使用されている、POM(Project Object Model)形式のライブラリ依存解決方法がそのまま使用できます。そのため、Maven リポジトリ上に存在するJava ライブラリであれば、設定を書くだけで依存関係を解決することができます。
sbt によるライブラリ依存関係解決例(libraryDependencies設定)
例として、 scala-time というライブラリを利用して、現在から半年後の日時を出力するプログラムを作成していきます。
プロジェクトディレクトリの構成
プロジェクトディレクトリの構成は以下の通りです。
.
├── build.sbt
├── bin
│ ├── sbt
│ ├── sbt-launch.jar
│ └── sbt.bat
└── src
├── main
│ └── scala
│ └── Main.scala
└── test
└── scala
また、各ファイルの構成は以下の通りです。
build.sbt
name := "scala-time-sample" version := "0.1" scalaVersion := "2.9.1" libraryDependencies ++= Seq( "org.scala-tools.time" % "time_2.9.1" % "0.5" )Main.scala
import org.scala_tools.time.Imports._
import DateTime.now
object Main extends Application {
println(now + 6.month)
}
このプログラムを実行するため、 sbt を起動し、 run コマンドを実行します。
> run
Maven を使用した開発から移行する際のポイント
ライブラリの依存関係解決方法の比較
maven では、pom.xml の dependencies 要素の中に記述することでライブラリの依存関係を解決します。以下に例を示します。
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc4</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
</dependencies>
上記のサンプルを sbt で設定する場合、以下のようになります。
libraryDependencies ++= Seq( "postgresql" % "postgresql" % "8.4-701.jdbc4", "c3p0" % "c3p0" % "0.9.1.2" )
リポジトリ追加方法の比較
maven では、pom.xml の repositories 要素の中に記述することでライブラリ取得先のリポジトリを追加します。以下に例を示します。
<repositories>
<repository>
<id>maven.seasar.org</id>
<name>The Seasar Foundation Maven2 Repository</name>
<url>http://maven.seasar.org/maven2</url>
</repository>
<repository>
<id>maven-snapshot.seasar.org</id>
<name>The Seasar Foundation Maven2 Snapshot Repository</name>
<url>http://maven.seasar.org/maven2-snapshot</url>
</repository>
</repositories>
上記のサンプルを sbt で設定する場合、以下のようになります。
resolvers ++= Seq( "The Seasar Foundation Maven2 Repository" at "http://maven.seasar.org/maven2", "The Seasar Foundation Maven2 Snapshot Repository" at "http://maven.seasar.org/maven2-snapshot" )
既存の pom.xml を使用して sbt の依存関係定義を行う方法
既に Maven でプロジェクト管理を行っている場合、以下を build.sbt に記述することで依存関係定義が取り込まれます。
externalPom()
また、pom.xml ではなく、別名で管理している場合は以下のように記述します。
externalPom(baseDirectory(_ / "custom-name.xml"))
まとめ
ここでは以下のことを解説しました
- sbt を使用したJavaライブラリの依存関係の解決方法
- sbt によるビルド定義方法の種類
- build.sbt による基本的なビルド定義方法
- Maven を使用した開発から移行する際に参考となるポイント
次回は、scala コードベースのビルド定義によって、より自由なプロジェクト管理を行う方法について解説します。

















