§ビルドシステムの概要
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を手動で更新する必要があります。
このドキュメントに誤りを見つけましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインを読んだ後、プルリクエストを送信してください。質問やアドバイスがあれば、コミュニティフォーラムにアクセスして、コミュニティとの会話を始めてください。