§ビルドシステムの概要
Playのビルドシステムは、ScalaおよびJavaプロジェクトの高性能統合ビルドであるsbtを使用します。ビルドツールとしてsbt
を使用すると、Playに特定の要件が課せられます。このページでは、それらの要件について説明します。
§sbtについて
sbtは、多くの従来のビルドタスクとはかなり異なる方法で機能します。基本的に、sbtはタスクエンジンです。ビルドは、実行する必要があるタスクの依存関係ツリーとして表されます。たとえば、compile
タスクはsources
タスクに依存し、sources
タスクはsourceDirectories
タスクとsourceGenerators
タスクに依存します。以下同様です。
sbtは、一般的なビルド実行を非常にきめ細かいタスクに分割します。ツリー内の任意の時点の任意のタスクは、ビルド内で任意に再定義できます。これにより、sbtは非常に強力になりますが、ビルドを非常に粗いタスクに分割する他のビルドツールから移行してきた場合は、考え方を変える必要があります。
ここでのドキュメントでは、Playでのsbtの使用方法について、非常に高いレベルで説明しています。プロジェクトでsbtを使い始めたら、sbtチュートリアルに従って、sbtがどのように連携するかを理解することをお勧めします。多くの人が役立つと感じているもう1つのリソースは、このブログ投稿シリーズです。
§Playアプリケーションのディレクトリ構造
ほとんどの人は、Playのサンプルテンプレートのいずれか、または通常はこのようなディレクトリ構造を生成するsbt new
コマンドを使用してPlayを使い始めます。
/
:アプリケーションのルートフォルダー/README
:アプリケーションを説明するテキストファイル。アプリケーションと共にデプロイされます。/app
:アプリケーションコードが格納される場所/build.sbt
:アプリケーションのビルドを記述するsbt設定/conf
:アプリケーションの設定ファイル/project
:ビルドの説明情報の詳細/public
:アプリケーションの静的なパブリックアセットが格納される場所/test
:アプリケーションのテストコードが格納される場所
ここでは、/build.sbt
ファイルと/project
ディレクトリについて説明します。
ヒント:Playアプリケーションの完全な構造については、こちらをご覧ください。
§/build.sbt
ファイル
Playのsbtビルドファイルは、一般的に次のようになります。
name := "foo"
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq(
jdbc,
anorm,
ehcache
)
lazy val root = (project in file(".")).enablePlugins(PlayScala)
name
行はアプリケーションの名前を定義します。これは、アプリケーションのルートディレクトリ/
の名前と同じになります。sbtでは、これはsbt new
コマンドに指定した引数から派生します。
version
行は、ビルドで生成されるアーティファクトの名前の一部として使用されるアプリケーションのバージョンを指定します。
libraryDependencies
行は、アプリケーションが依存するライブラリを指定します。sbtドキュメントで依存関係の管理方法の詳細を確認できます。
最後に、プロジェクトでsbtプラグインを有効にして、「Play化」する必要があります。これにより、twirlコンパイラやroutesコンパイラなどのPlay固有の機能のサポートが追加され、プロジェクトをビルドしてサーバーを実行するために必要なPlayライブラリが追加されます。通常、Playアプリケーションには、次のいずれかのPlayプラグインを使用する必要があります。
- PlayScala
:標準のPlay Scalaプロジェクト
- PlayJava
:フォームモジュールを備えた標準のPlay Javaプロジェクト
- PlayMinimalJava
:フォームサポートのない最小限のPlay Javaプロジェクト
デフォルトでは、PlayJava
およびPlayScala
プラグインは、特定の依存性注入ソリューションに依存しません。PlayのGuiceモジュールを使用する場合は、ライブラリの依存関係にguice
を追加します。
libraryDependencies += guice
§ビルドにScalaを使用する
sbtは、プロジェクトのproject
フォルダー内のScalaファイルからビルド要件を構築することもできます。推奨される方法はbuild.sbt
を使用することですが、Scalaを直接使用する必要がある場合があります。たとえば、古いプロジェクトを移行している場合などです。その場合に役立つインポートをいくつか紹介します。
import sbt._
import Keys._
import play.sbt._
import Play.autoImport._
import PlayKeys._
autoImport
を示す行は、sbtプラグインの自動的に宣言されたプロパティをインポートする正しい方法です。同様に、sbt-webプラグインをインポートする場合も同様です。
import com.typesafe.sbt.less.autoImport._
import LessKeys._
§/project
ディレクトリ
プロジェクトのビルドに関連するすべてのものは、アプリケーションディレクトリの下の/project
ディレクトリに保存されます。これは、sbtの要件です。そのディレクトリ内には、2つのファイルがあります。
/project/build.properties
:これは、使用されるsbtバージョンを宣言するマーカーファイルです。/project/plugins.sbt
:Play自体を含む、プロジェクトビルドで使用されるsbtプラグイン
§sbtのPlayプラグイン(/project/plugins.sbt
)
Playコンソールとそのすべての開発機能(ライブリローディングなど)は、sbtプラグインを介して実装されます。これは、/project/plugins.sbt
ファイルに登録されています。
addSbtPlugin("org.playframework" % "sbt-plugin" % playVersion) // where version is the current Play version, i.e. "3.0.x"
注:Playバージョンを変更する場合は、
build.properties
とplugins.sbt
を手動で更新する必要があります。
このドキュメントに誤りを見つけましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインを読んだ後、プルリクエストを送信してください。質問やアドバイスがあれば、コミュニティフォーラムにアクセスして、コミュニティとの会話を始めてください。