文档

§构建系统概述

Play 构建系统使用 sbt,这是一个用于 Scala 和 Java 项目的高性能集成构建工具。使用 sbt 作为我们的构建工具,对 Play 提出了一些要求,这些要求将在本页中说明。

§了解 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 文档中管理依赖项的更多详细信息

最后,您需要在项目上启用一个 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 的要求。在该目录中,有两个文件

§Play 插件 for sbt (/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 设置


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