文件

§建置系統概觀

Play 建置系統使用 sbt,這是一個針對 Scala 和 Java 專案的高效能整合建置。使用 sbt 作為我們的建置工具會帶來某些需求,這些需求已在本頁說明。

§了解 sbt

sbt 的功能與許多傳統建置任務大不相同。從根本上來說,sbt 是個任務引擎。您的建置會表示為需要執行的任務依存關係樹,例如,compile 任務依賴於 sources 任務,而 sources 任務依賴於 sourceDirectories 任務和 sourceGenerators 任務,以此類推。

sbt 將典型的建置執行分解成非常細微的任務,而且樹狀結構中任何一點的任務都可以在您的建置中任意重新定義。這讓 sbt 非常強大,但如果您使用的是將建置分解成非常粗略任務的其他建置工具,則需要轉換思維。

此處的文件描述了 Play 在非常高層級中使用 sbt 的情況。當您開始在專案中更多使用 sbt 時,建議您遵循 sbt 教學,以了解 sbt 如何結合在一起。許多人發現有用的另一項資源是 這系列部落格文章

§Play 應用程式目錄結構

大多數人使用我們的其中一個 範例範本,或使用 sbt new 指令開始使用 Play,這通常會產生如下目錄結構

目前,我們將關注 /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 化」專案。這會新增對 Play 特定功能的支援,例如 twirl 編譯器和路由編譯器,並新增必要的 Play 函式庫來建置專案和執行伺服器。一般來說,您應該為 Play 應用程式使用下列其中一個 Play 外掛程式
- PlayScala:標準 Play Scala 專案。
- PlayJava:標準 Play Java 專案,包含表單模組。
- PlayMinimalJava:精簡的 Play Java 專案,不支援表單。

預設情況下,PlayJavaPlayScala 外掛程式不依賴任何特定依賴項注入解決方案。如果您想使用 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 的需求。在該目錄內,有兩個檔案

§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.propertiesplugins.sbt

下一步:關於 sbt 設定


在此文件發現錯誤?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時貢獻拉取請求。有問題或建議要分享?前往 我們的社群論壇 與社群開始對話。