標準的應用目錄佈局
Play 應用的目錄佈局是標準化的,這樣可保持儘量的簡單. 一個標準的 Play 應用看起來如下:
app → 應用程序源文件
└ assets → 待編譯的資源文件
└ stylesheets → 比如放置 LESS CSS 源文件
└ javascripts → 比如放置 CoffeeScript 源文件
└ controllers → 應用的控制器
└ models → 應用的業務層
└ views → 視圖模板
conf → 配置文件和其他無需編譯的放在 classpath 下的文件
└ application.conf → 主配置文件
└ routes → 路由定義文件
public → 公共資源
└ stylesheets → CSS 樣式文件
└ javascripts → Javascript 腳本文件
└ images → 圖片
project → sbt 配置文件
└ build.properties → sbt 項目屬性配置
└ Build.scala → 應用構建腳本
└ plugins.sbt → sbt 插件配置
lib → 不受管理的庫依賴
logs → 標準的日誌目錄
└ application.log → 默認的日誌文件
target → 構建生成的東西
└ scala-2.9.1
└ cache
└ classes → 編譯生成的類文件
└ classes_managed → 受管理的類文件 (如模板等生成的)
└ resource_managed → 受管理的資源文件 (如 Less 等生成的)
└ src_managed → 產生的源文件 (如模板等)
test → 單元和功能性測試的源文件目錄
app/ 目錄
app
目錄飲食了所有的執行構件: Java 和 Scala 的源代碼, 模板和需編譯的資源文件.
在 app 目錄中有三個標準包, 它們各自對應着 MVC 構架模式的每一類部件:
-
app/controllers
-
app/models
-
app/views
你當然可以在其中加入自己的包, 如 app/utils
包.
注: 在 Play 2.0 中, controllers, models 和 views 三個包的命名是比較合理的, 如果需要你也可以更改這些包名 (比如給包名都加上前綴
com.yourcompany
).
其中有一個可選的目錄叫做 app/assets
用於存放須編譯的資源文件, 像 LESS
源文件 和 CoffeeScript
源文件 .
public/ 目錄
存放在 public
目錄中的資源文件是靜態的, 它們直接被 Web 服務器所使用(Unmi
注: 無需預處理).
這個目錄分成三個標準的子目錄,分別用於存放圖片文件, CSS 樣式表文件和 JavaScript 文件. 你應該像這樣組織你的靜態資源文件以保持所有的 Play 應用的一致性.
在新創建的應用中,
/public
目錄被映射在了/assets
URL 路徑上, 不過你可以很輕易的改變這一映射規則, 甚至是使用數個存放靜態資源的目錄.Unmi 注: Play 完成 /assets URL 到 /public 的映射是通過在 routes 路由文件中加入以下配置實現的:
# Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public", file)
conf/ 目錄
conf
目錄包含了應用的配置文件. 這兒有兩個主要的配置文件:
-
application.conf
, 應用的主配置文件, 裏面包含了標準的配置參數 -
routes
, 路由定義文件.
假如需要爲應用添加特別的配置項, 較好的辦法是在直接在 application.conf
文件中加入更好的配置項.
Unmi 注: 如果你確實有必須寫一個獨立的配置文件,而且裏面的配置項也比較多,可以在 application.conf 用 @include.extra=extra.conf 引入進來,這樣可讀性要比全堆在 application.conf 一個文件中要高。
如果某個庫需要自己的配置文件, 儘量也放在 conf
目錄中.
lib/ 目錄
lib
目錄是可選的, 它包含了不受管理的庫依賴. 所有的無法用構建系統需手工管理的 JAR 包.
只需丟到這個目錄中去,它們就會被添加到應用的 classpath 中去.
project/ 目錄
project
目錄飲食了 sbt 構建定義文件:
-
plugins.sbt
定義了項目所用到的 sbt 插件 -
Build.scala
定義了你的應用的構建腳本.
target/ 目錄
target
目錄包含了一切由構建系統生成的文件. 它讓你知曉構建時都產生了些什麼是很有用處的.
-
classes/
包含了所有編譯後的類文件 (來自於 Java 和 Scala 源文件的). -
classes_managed/
僅僅包含了由框架管理而生成的類 (比如由路由和模板系統生成的類). 在你的 IDE 項目中, 這有助於你以外部類目錄的方式添加一個類目錄. -
resource_managed/
包含生成的資源文件, 比如說由編譯像 LESS CSS 和 CoffeeScript 產生的目標文件. -
src_managed/
包含產生的源文件, 如由模板系統生成的 Scala 源文件.
基本的.gitignore 文件
自動產生的目錄應該讓版本控制系統忽略掉的. 這是一個 Play 應用基本的.gitignore
文件:
logs
project/project
project/target
target
tmp
Unmi 注: 也就是說上面那些文件或目錄不應該加到版本服務器上, 只需要保留在每個開發者本地機器上即可。這個是 play new 爲你生成的給 Git 用的 .gitignore 文件, 用 SVN 等別的版本管理服務時請作相應的忽略操作。
用 Play 2.0.4 創建的項目的 .gitignore 文件內容行數比較多,是:
logs project/project project/target target tmp .history dist /.idea /*.iml /out /.idea_modules /.classpath /.project /RUNNING_PID