MavenからSBTへのビルド環境の移行 プロジェクトの準備

目次へ戻る

1. SBTプロジェクトファイルの準備

今回は、JSONライブラリのGSONを使ってJSONのパースをするプログラムとそのテストを作りたいと思います。
まず、適当に空のディレクトリを作成しそこへ移動してください。

1.1 sbtプロジェクトファイルの用意

projectディレクトリを作成し、Build.scalaというファイルを作成し以下のコードを書いてください。

import sbt._
import Keys._

object HelloBuild extends Build {
  lazy val root = Project(id = "hello",
    base =  file("."),
    settings = Project.defaultSettings ++ Seq(
      version := "0.0.1-SNAPSHOT"
    )
  )

}

あとは、sbtを実行(すでに実行している場合は、reloadで再読み込み)を行なってエラーが起きないことを確認してください。
これが、最小構成のsbtのプロジェクトファイルになります。
sbtの思想を簡単に説明しておくと、sbtでは全ての設定がSettingKeyとValueのペアとなっています。この例では、

version := "0.0.1-SNAPSHOT"

の部分が設定に相当し、versionというSettingKeyに”0.0.1-SNAPSHOT”というValueを設定しています。その他の設定もこのようにKeyValueのペアとして表現されます。

2. 基本設定

2.1 groupIdやartifactId等の設定

mavenのgroupIdやartifactIdなどの基本情報の設定は以下のように対応します。
これ以外の使用可能なSettingKeyはsbt.Keysに定義されています。

Mavenでのタグ名 SettingKey
groupId organization
artifactId Project@id + “_” + scalaVersion
version version
description description
import sbt._
import Keys._

object HelloBuild extends Build {
  lazy val root = Project(id = "sbt-gson",
    base =  file("."),
    settings = Project.defaultSettings ++ Seq(
      version := "0.0.1-SNAPSHOT",
      organization := "com.geishatokyo",
      description := "this is gson program"
    )
  )
}

はpomファイルの

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.geishatokyo</groupId>
    <artifactId>sbt-gson_2.9.1</artifactId>
    <packaging>jar</packaging>
    <description>this is gson program</description>
    <version>0.0.1-SNAPSHOT</version>
    <name>sbt-gson</name>
    ...
</project>

と等価になります。なお、sbtコンソールで

make-pom

コマンドを使用するとpomファイルを生成してくれます。

2.2 scala version

sbtではコンパイルに使用するscalaのバージョンと、CrossVersionBuildの設定が簡単に行えます。
現在はデフォルトではscala2.9.1が使用されます。

SettingKeyは

scalaVersion String scalaVersion := “2.9.1″
crossScalaVersions Seq[String] crossScalaVersion := Seq(“2.7.7″,”2.8.1″,”2.9.0″,”2.9.0-1″,”2.9.1″)

crossScalaVersionsを設定しておくと、

+compile
+publish

と+を付けてコマンド実行すると設定したscala version全てでビルドや配置を行なってくれます。

今回はscala2.9.1とscala2.9.0でコンパイルします。
最終的なBuild.scalaは以下のようになります。

import sbt._
import Keys._

object HelloBuild extends Build {
  lazy val root = Project(id = "sbt-gson",
    base =  file("."),
    settings = Project.defaultSettings ++ Seq(
      version := "0.0.1-SNAPSHOT",
      organization := "com.geishatokyo",
      description := "this is gson program",
      scalaVersion := "2.9.1",
      crossScalaVersions := Seq("2.9.0-1","2.9.0")
    )
  )
}

目次へ | 依存関係解決へ

This entry was posted in Scala, maven, sbt and tagged , , . Bookmark the permalink.

Comments are closed.