Play Framework 作为 SBT 非根模块

Posted

技术标签:

【中文标题】Play Framework 作为 SBT 非根模块【英文标题】:Play Framework as SBT Non-Root Module 【发布时间】:2012-04-14 19:19:55 【问题描述】:

我正在尝试开发一个 Play 2.0 Web 应用程序以及一个核心 Java 模块和其他使用 SBT 的 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】:

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

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

【讨论】:

以上是关于Play Framework 作为 SBT 非根模块的主要内容,如果未能解决你的问题,请参考以下文章

未解决的依赖关系 sbt with play framework

Play Framework 2.5 sbt-fork-run-plugin;2.5.1: not found

sbt compile play framework 应用错误

如何使用 Play Framework 的 SBT 下载 Maxmind 数据库

将 JVM Opts 从 build.sbt 传递到 Play Framework 2.2.x 中的启动脚本

将项目升级到 Play Framework 的 2.2.0 版本