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
似乎适用于common
、client1
和client2
模块,但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 数据库