2011年11月14日

sbt基本メモ

sbt(simple-build-tool)についてメモ
公式系
・ソースコード:https://github.com/harrah/xsbt
・ドキュメント:https://github.com/harrah/xsbt/wiki
・メーリングリスト:http://groups.google.com/group/simple-build-tool
◆0.7系と0.10(0.11)系とは?
0.10系で結構色々変わったので(scala2.7.7→scala2.8.1とかsbt自体のアーキテクチャとか)、大人しく0.10(0.11)系を使うべし。
◆セットアップ方法は?
sbtのセットアップ方法(xuwei-kさんが日本語約作ってくださってる):https://gist.github.com/1139288(英語はhttp://code.google.com/p/simple-build-tool/wiki/Setup)
◆構成
こんな構成になるはず。

-project:プロジェクトの設定類が配置されるディレクトリ
-plugins:sbtのプラグインを配置する
build.properties:buildプロパティ
-lib:ライブラリ配置ディレクトリ
-src:ソースファイル置き場
-main:メインソース置き場
-resources:リソース置き場
-scala:scalaコード置き場
-java:javaコード置き場
-test:テストソース置き場
-resources:リソース置き場
-scala:scalaコード置き場
-java:javaコード置き場
sbt.bat:sbt実行用のバッチファイル
sbt-launch.jar:sbt本体
build.sbt:basic configurationの場合

◆Projectの定義方法
二種類あります。
・Full Configuration(https://github.com/harrah/xsbt/wiki/Full-Configuration)
projectディレクトリ配下に、"プロジェクト名.scala"(ファイル名はなんでもOK)を作成して、trait(sbt.Build)を継承したobjectを定義する。
sample

import sbt._
object MyBuild extends Build{
//rootディレクトリを宣言して、sub1との依存関係を宣言
lazy val root = Project("root", file(".")) aggregate(sub1)
//Sub1ディレクトリ
lazy val sub1: Project = Project("sub1", file("a")) dependsOn(sub2 % "test")
lazy val sub2: Project("sub2", file("b"), delegates = root :: Nil)
}

・Basic Configuration(https://github.com/harrah/xsbt/wiki/Basic-Configuration)
projectディレクトリ配下にbuild.sbtファイルを作成。

// Set the project name to the string 'My Project'
name := "My Project"
// The := method used in Name and Version is one of two fundamental methods.
// The other method is <<=
// All other initialization methods are implemented in terms of these.
version := "1.0"
// Add a single dependency
libraryDependencies += "junit" % "junit" % "4.8" % "test"
// Add multiple dependencies
libraryDependencies ++= Seq(
"net.databinder" %% "dispatch-google" % "0.7.8",
"net.databinder" %% "dispatch-meetup" % "0.7.8"
)
// Exclude backup files by default. This uses ~=, which accepts a function of
// type T => T (here T = FileFilter) that is applied to the existing value.
// A similar idea is overriding a member and applying a function to the super value:
// override lazy val defaultExcludes = f(super.defaultExcludes)
//
defaultExcludes ~= (filter => filter || "*~")
/* Some equivalent ways of writing this:
defaultExcludes ~= (_ || "*~")
defaultExcludes ~= ( (_: FileFilter) || "*~")
defaultExcludes ~= ( (filter: FileFilter) => filter || "*~")
*/
// Use the project version to determine the repository to publish to.
publishTo <<= version { (v: String) =>
if(v endsWith "-SNAPSHOT")
Some(ScalaToolsSnapshots)
else
Some(ScalaToolsReleases)
}

名前の通り基本はBasicの方で良いと思います。Basicでできない
 ・sbtをカスタマイズする
 ・サププロジェクトを定義する
場合はFullを使う。
◆Plugin
"project/plugins"に設定ファイルをおく。


posted by purigen at 11:00| Comment(1) | TrackBack(0) | Scala | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
インナー
Posted by christian louboutin メンズ at 2013年07月20日 06:33
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。