§ビルドシステム
Play のビルドシステムは、Scala および Java プロジェクトに統合された高性能なビルドツールである sbt を使います。ビルドツールに sbt
を使うことは、このページで説明するいくつかの要件を play にもたらします。
§sbt を理解する
sbt の機能は、多くの古典的なビルドタスクのやり方と完全に異なっています。基本的に、sbt はタスクエンジンです。例えば compile
タスクは、sourceDirectories
と sourceGenerators
に依存する sources
タスクに依存すると言ったように、ビルドは実行する必要のあるタスクの依存ツリーとして表現されます。
sbt は典型的なビルドタスクをきめ細やかなタスクに分解し、ビルドツリーのあらゆる場所にあるすべてのタスクは、ビルド内にて任意に再定義することができます。これにより sbt はとてもパワフルになりますが、荒削りなビルドツール由来の考え方を切り替える必要もあります。
このドキュメントでは、Play における sbt を上位のレベルで記述します。プロジェクトにおいて sbt をより使い込んでいく際は、sbt チュートリアル を参照して sbt の組み合わせ方を理解することをお勧めします。このほかに、この一連のブログ も多くの人に利用されています。
§Play アプリケーションディレクトリ構成
多くのユーザが Play を始める際に使用する activator new
コマンドは、以下のようなディレクトリ構造を生成します:
/
: アプリケーションのルートフォルダ/README
: アプリケーションと共にデプロイされる、アプリケーションの説明ファイル/app
: コードの格納場所/build.sbt
: アプリケーションのビルドを記述する sbt 設定/conf
: アプリケーションの設定ファイル/project
: 追加のビルド記述情報/public
: アプリケーションの静的かつ公開されたアセットの格納場所/test
: アプリケーションテストコードの格納場所
今後は この /build.sbt
ファイルと /project
ディレクトリが重要になります。
§/build.sbt
ファイル
activator new foo
コマンドを使うと、以下のようなビルド定義ファイル /build.sbt
が生成されます:
name := "foo"
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq(
jdbc,
anorm,
cache
)
lazy val root = (project in file(".")).enablePlugins(PlayScala)
name
行は、 /
、すなわち activator new
コマンドに与えた引数より引き渡されるアプリケーションルートと同じ名前となる、アプリケーションの名前を定義します。
version
行は、ビルドするアーティファクト名の一部に使われる、アプリケーションのバージョンを提供します。
libraryDependencies
行はアプリケーションが依存するライブラリを指定します。詳しくは後述します。
Java または Scala 向けに、PlayJava
または PlayScala
プラグインを sbt に個別に設定しなければなりません。
§ビルドに scala を使う
Activator は、プロジェクトの project
フォルダ内にある scala ファイルからビルド要件を組み立てることもできます。おすすめは build.sbt を使うことですが、ことによると古いプロジェクトから移行する場合などに、scala ディレクトリが必要になるときがあります。その場合は、いくつかの便利なインポートがあります:
import sbt._
import Keys._
import play.Play.autoImport._
import PlayKeys._
autoImport
と書かれた行は、sbt プラグインに宣言されたプロパティを自動的にインポートする手段を是正したものです。これらと併せて、例えば sbt-web プラグインをインポートすることもできます:
import com.typesafe.sbt.less.autoImport._
import LessKeys._
§/project
ディレクトリ
ビルドに関するものはすべてアプリケーションディレクトリ配下の /project
ディレクトリに保持されます。これは sbt の要件です。このディレクトリには次の二つのファイルがあります:
/project/build.properties
: 使用する sbt のバージョンを宣言するマーカーファイルです。/project/plugins.sbt
: Play 自身を含む、プロジェクトが使用する SBT プラグイン群です。
§sbt 用の Play プラグイン (/project/plugins.sbt
)
Play コンソールや、ライブリロードのような開発系の機能は sbt プラグインとして実装されています。これらは /project/plugins.sbt
ファイルに登録されています:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % playVersion) // where version is the current Play version, i.e. "2.4.x"
play のバージョンを変更する際は、手動で
build.properties
とplugins.sbt
を更新しなければならないことに注意してください。
Next: sbt 設定について
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。