Play Framework as SBT Non-Root Module

时间:2012-03-31 08:19:07

标签: scala playframework sbt playframework-2.0

我正在尝试使用SBT开发Play 2.0 Web应用程序以及核心Java模块和其他Java客户端。是否可以通过正确构建Play应用程序的方式对其进行配置?

之前我开发了一个小型的一次性Play 2.0应用程序,但我没有直接使用SBT的经验。到目前为止,我已经提出了以下目录结构和project/Build.scala文件。

root/
 |---common/
 |
 |---client1/
 |---client2/
 |
 |---webapp/
 |    |---app/
 |    |---conf/
 |    |---public/
 |
 |---project/

object ApplicationBuild extends Build {

    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      // Add your project dependencies here,
    )

    val common  = Project("hi-common", file("common"))

    val client1 = Project("hi-client1", file("client1")).dependsOn(common)

    val client2 = Project("hi-client2", file("client2")).dependsOn(common)

    val webapp = PlayProject("hi-webapp", appVersion, appDependencies, path = file("webapp"),  mainLang = JAVA).settings(
        // Add your own project settings here      
    ).dependsOn(common)

    val root = Project("hi", file(".")).aggregate(client1, client2, webapp)

}

正在运行sbt clean package似乎适用于commonclient1client2模块,但webapp模块未打包到我的位置可以运行webapp/target/start

我可以做些什么来实现具有适当输出的单个构建?

1 个答案:

答案 0 :(得分:7)

这里的问题是,仅仅运行package目标还不足以为您生成启动脚本。它将组装完整的包Web应用程序,但没有一种启动它的方法。

我的目标是部署到Heroku,它可以方便地提供一个插件,为您生成这个启动脚本。默认情况下,使用Play 2.0 Web应用程序添加了插件包含的存储库,因此您只需要将用于构建的命令修改为sbt clean compile stage,您将找到start脚本在webapp/target/文件夹中。