文档

§Play 应用程序的结构

§Play 应用程序布局

Play 应用程序的布局是标准化的,以尽可能保持简单。在第一次成功编译后,项目结构如下所示

app                      → Application sources
 └ assets                → Compiled asset sources
    └ stylesheets        → Typically LESS CSS sources
    └ javascripts        → Typically CoffeeScript sources
 └ controllers           → Application controllers
 └ models                → Application business layer
 └ views                 → Templates
build.sbt                → Application build script
conf                     → Configurations files and other non-compiled resources (on classpath)
 └ application.conf      → Main configuration file
 └ routes                → Routes definition
dist                     → Arbitrary files to be included in your projects distribution
public                   → Public assets
 └ stylesheets           → CSS files
 └ javascripts           → Javascript files
 └ images                → Image files
project                  → sbt configuration files
 └ build.properties      → Marker for sbt project
 └ plugins.sbt           → sbt plugins including the declaration for Play itself
lib                      → Unmanaged libraries dependencies
logs                     → Logs folder
 └ application.log       → Default log file
target                   → Generated stuff
 └ resolution-cache      → Info about dependencies
 └ scala-2.13
    └ api                → Generated API docs
    └ classes            → Compiled class files
    └ routes             → Sources generated from routes
    └ twirl              → Sources generated from templates
 └ universal             → Application packaging
 └ web                   → Compiled web assets
test                     → source folder for unit or functional tests

§app/ 目录

app 目录包含所有可执行工件:Java 和 Scala 源代码、模板和已编译的资产源。

app 目录中有三个包,每个包对应 MVC 架构模式的一个组件

你可以添加自己的包,例如,app/services 包。

注意:在 Play 中,controllersmodelsviews 包名只是约定,如果需要可以更改(例如,在所有内容前面加上 com.yourcompany)。

还有一个可选目录称为 app/assets,用于已编译的资产,例如 LESS 源代码CoffeeScript 源代码

§public/ 目录

存储在 public 目录中的资源是静态资产,由 Web 服务器直接提供服务。

此目录分为三个子目录,用于图像、CSS 样式表和 JavaScript 文件。你应该像这样组织你的静态资产,以保持所有 Play 应用程序的一致性。

在新建的应用程序中,/public 目录映射到 /assets URL 路径,但你可以轻松更改它,甚至使用多个目录来存放你的静态资产。

§conf/ 目录

conf 目录包含应用程序的配置文件。有两个主要的配置文件

如果你需要添加特定于你的应用程序的配置选项,最好在 application.conf 文件中添加更多选项。

如果库需要特定的配置文件,最好将其提供在 conf 目录下。

§lib/ 目录

lib 目录是可选的,包含未管理的库依赖项,即所有你想要在构建系统之外手动管理的 JAR 文件。只需将任何 JAR 文件放在这里,它们就会被添加到你的应用程序类路径中。

§build.sbt 文件

项目的主要构建声明通常位于项目根目录下的 build.sbt 文件中。

§project/ 目录

project 目录包含 sbt 构建定义。

§target/ 目录

target 目录包含构建系统生成的所有内容。了解这里生成的内容可能很有用。

§典型的 .gitignore 文件

生成的文件夹应该被您的版本控制系统忽略。以下是一个 Play 应用程序的典型 .gitignore 文件

logs
project/project
project/target
target
tmp
dist
.bsp
.cache
RUNNING_PID

§默认 sbt 布局

您也可以选择使用 sbtMaven 使用的默认布局。要使用此布局,您必须禁用布局插件并为 twirl 模板设置显式监控

// Copyright (C) from 2022 The Play Framework Contributors <https://github.com/playframework>, 2011-2021 Lightbend Inc. <https://www.lightbend.com>

lazy val root: Project = (project in file("."))
  .enablePlugins(PlayScala)
  // Use sbt default layout
  .disablePlugins(PlayLayoutPlugin)

这将阻止 Play 覆盖默认的 sbt 布局,其外观如下

build.sbt                  → Application build script
src                        → Application sources
 └ main                    → Compiled asset sources
    └ java                 → Java sources
       └ controllers       → Java controllers
       └ models            → Java business layer
    └ scala                → Scala sources
       └ controllers       → Scala controllers
       └ models            → Scala business layer
    └ resources            → Configurations files and other non-compiled resources (on classpath)
       └ application.conf  → Main configuration file
       └ routes            → Routes definition
    └ twirl
       └ views             → Templates
    └ assets               → Compiled asset sources
       └ css               → Typically LESS CSS sources
       └ js                → Typically CoffeeScript sources
    └ public               → Public assets
       └ css               → CSS files
       └ js                → Javascript files
       └ images            → Image files
 └ test                    → Unit or functional tests
    └ java                 → Java source folder for unit or functional tests
    └ scala                → Scala source folder for unit or functional tests
    └ resources            → Resource folder for unit or functional tests
 └ universal               → Arbitrary files to be included in your projects distribution
project                    → sbt configuration files
 └ build.properties        → Marker for sbt project
 └ plugins.sbt             → sbt plugins including the declaration for Play itself
lib                        → Unmanaged libraries dependencies
logs                       → Logs folder
 └ application.log         → Default log file
target                     → Generated stuff
 └ scala-2.13
    └ cache
    └ classes              → Compiled class files
    └ classes_managed      → Managed class files (templates, ...)
    └ resource_managed     → Managed resources (less, ...)
    └ src_managed          → Generated sources (templates, ...)

下一步:使用 Play 控制台


发现此文档中的错误?此页面的源代码可以在 此处 找到。在阅读 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?前往 我们的社区论坛 与社区进行对话。