§建置系統概觀
Play 建置系統使用 sbt,這是一個針對 Scala 和 Java 專案的高效能整合建置。使用 sbt
作為我們的建置工具會帶來某些需求,這些需求已在本頁說明。
§了解 sbt
sbt 的功能與許多傳統建置任務大不相同。從根本上來說,sbt 是個任務引擎。您的建置會表示為需要執行的任務依存關係樹,例如,compile
任務依賴於 sources
任務,而 sources
任務依賴於 sourceDirectories
任務和 sourceGenerators
任務,以此類推。
sbt 將典型的建置執行分解成非常細微的任務,而且樹狀結構中任何一點的任務都可以在您的建置中任意重新定義。這讓 sbt 非常強大,但如果您使用的是將建置分解成非常粗略任務的其他建置工具,則需要轉換思維。
此處的文件描述了 Play 在非常高層級中使用 sbt 的情況。當您開始在專案中更多使用 sbt 時,建議您遵循 sbt 教學,以了解 sbt 如何結合在一起。許多人發現有用的另一項資源是 這系列部落格文章。
§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 化」專案。這會新增對 Play 特定功能的支援,例如 twirl 編譯器和路由編譯器,並新增必要的 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 的需求。在該目錄內,有兩個檔案
/project/build.properties
:這是宣告所使用的 sbt 版本的標記檔案。/project/plugins.sbt
:專案建構所使用的 sbt 外掛,包括 Play 本身。
§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
。
下一步:關於 sbt 設定
在此文件發現錯誤?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時貢獻拉取請求。有問題或建議要分享?前往 我們的社群論壇 與社群開始對話。