#contents
 *sbt [#ocdab68a]
 -Scala プログラムのビルドツール
 -http://www.scala-sbt.org/index.html
 *sbtプロジェクトの作成 [#d2377b1c]
 -前提
 --[[Scala Install]] で Scala/Sbt をインストール
 --[[Scala Netbeans 8]] で Scala plugin をインストール
 -新規プロジェクトの作成で Scala を選べば sbt プロジェクトが作られる
 #ref(create_new_project.png)
 *sbtプロジェクトのディレクトリ構造 [#d79bc9a0]
 #ref(sbt_directory.png)
 -ソースコードの配置場所は Maven に準ずる
 |src/main/java     |ソースコード|
 |src/main/scala    |ソースコード|
 |src/main/resources|設定ファイルやアイコン画像など|
 |src/test/java     |テストコード|
 |src/test/scala    |テストコード|
 |src/test/resources|テストデータなど|
 -設定ファイルは project/ に配置
 |Build.scala       |ビルドスクリプト(旧式の記述方法) → 削除する|
 |build.sbt.template|ビルドスクリプト(現行の記述方法) → build.sbt にリネームする|
 |build.properties  |sbt の バージョン指定|
 |plugins.sbt       |sbt の plugin 指定|
 *build.properties [#u2640536]
 -sbt のバージョンを指定する
 &code(plain, https://github.com/kagyuu/ScalaSbtExam/blob/master/project/build.properties);
 *plugins.sbt [#j0ec6daf]
 -sbt のpluginを指定する
 &code(plain, https://github.com/kagyuu/ScalaSbtExam/blob/master/project/plugins.sbt);
 指定方法は
  addSbtPlugin( "${groupId}" % "${artifactId}" % "${version}")
 -公式ドキュメントでは、plugin ごとに sbt ファイルを作る用に書いてあったけど、Netbeans の Scala-plugin は plugins.sbt にまとめる主義らしい
 -主要な plugin → http://www.scala-sbt.org/0.13/docs/Community-Plugins.html
 *build.sbt [#pfe5f57f]
 &code(scala, https://github.com/kagyuu/ScalaSbtExam/blob/master/project/build.sbt);
 -Project Settings
 --[[sbt.Project>http://www.scala-sbt.org/0.13/api/index.html#sbt.Project]] オブジェクトに key:value の形で設定を追加しているだけ
 --設定項目は http://www.scala-sbt.org/0.13/api/index.html#sbt.Keys$
 --主な設定項目
 |option|type|explanation|h
 |organization |String |gropuId|
 |name |String |artifactId|
 |version |String |version|
 |scalaVersion |String |scala version|
 |scalaOptions |Seq[String] |scala compiler options|
 |javaOptions |Seq[String] |java compiler options|
 |resolvers |Seq[Resolver]|Maven repository. (${name} at ${url}) |
 |libraryDependencies|Seq[ModuleID]|required library. (${groupId}" % "${artifactId}" % "${version}")|
 |&aname(MavenRepo){publishTo};|SettingKey[Option[Resolver]]|publish jar to the Maven repository. cf. http://www.scala-sbt.org/release/docs/Publishing.html |
 |&aname(MainClass){mainClass};|String|project main class|
 --libraryDependencies で指定するライブラリに scala のバージョンを入れる&br;
  scalaVersion := "2.10.4"
 のとき
  "org.scala-tools" %% "scala-stm" % "0.3"
 は、
  "org.scala-tools" % "scala-stm_2.10.4" % "0.3"
 と同じ
 --ローカルにおいた jar を参照したい
  lib/
 に jar ファイルを置けば、sbt がビルド時に参照してくれる
 --演算子
 |key := value|key に value を設定する|
 |key += value|key に value を追加する|
 |key ++= Seq(value1, value2, value3, ...)|key に value1, value2, value3 を追加する|
 -Plugin
 --plugins.sbt で取得した plugin に対して設定を行う。sbt.Project と同様に key:value 形式のオブジェクトを作る
 --scalariformSettings は、compile 時にソースコードの生計を行う plugin
 ---https://github.com/sbt/sbt-scalariform
 ---https://github.com/scala-ide/scalariform
 *マルチプロジェクト [#f2fa7366]
 #code(scala){{{
 lazy val commonSettings = Seq(
   organization := "com.example",
   version := "0.1.0",
   scalaVersion := "2.11.7"
   )
 
 lazy val root = (project in file(".")).
   aggregate(util, core)
 
 lazy val core = (project in file("core")).
   settings(commonSettings: _*).
   settings(
   // other settings
   name := "SampleCore",
   )
 
 lazy val util = (project in file("util")).
   settings(commonSettings: _*).
   settings(
   // other settings
   name := "SampleUtil",
   ).
   dependsOn(core)
 }}}
 -ディレクトリごとに sbt.Project オブジェクトを作る
 -root プロジェクトが util, core を aggreaget しているので、root で sbt が動くと core と util がビルドされる
 -util.dependsOn(core) で、util プロジェクトは core プロジェクトの成果物に依存させる
 -共通的な設定は commonSettings に定義 (Netbeasn で生成された単一プロジェクトの sbt にcommonsSettings があったけど、マルチプロジェクトに行きやすくするためだったのね
 *sbt コマンド [#r3aa4ead]
 -http://www.scala-sbt.org/0.13/docs/Command-Line-Reference.html
 |clean |target/ を削除|
 |publishLocal |ローカルのIvyレポジトリに、作成した資産を配布|
 |publish |リモートのレポジトリに、作成した資産を配布 cf.[[Mavenレポジトリへの配布>#MavenRepo]]|
 |udpate |依存ライブラリを更新|
 |compile |src/main/scala、src/main/java 配下のソースコードをコンパイルする|
 |console |コンパイル済み資産を Classpath に加えて sbt コンソールを起動。終了 Ctrl+D(Unix) Ctrl+Z(Windows)|
 |package |src/main/scala、src/main/java、src/main/resources → jar|
 |packageDoc |src/main/scala → doc jar|
 |packageSrc |src/main/scala → src jar|
 |run <argument>*|プロジェクトのメインクラスを実行する cf.[[メインクラスの指定>#MainClass]]|
 |runMain <main-class> <argument>*|プロジェクト内の任意のメインクラスを実行する|
 |test |テストを実行する|
 *2016-07 時点での留意点 [#u29c1d9e]
 -sbt 1.3 は scala 2.10 ビルドされている
 -scalaVersion := "2.10.4" とする必要がある
 --2.11 だとビルドできない
 --とくに、auto plugin が初期化でコケる
 ----
 [[Scala]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Short-URL:
ISBN10
ISBN13
9784061426061