2012-03-31 54 views
12

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

我开发了一个小型的一次性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似乎恰当地针对commonclient1,并client2模块工作,但webapp模块是不是打包到一个地步,我可以运行webapp/target/start

我能做些什么来实现这个作为一个单一的建设与适当的输出?

+0

请指定赏金或一半将会丢失:) – 2012-04-06 08:37:18

+0

它不会让我。当你回答你自己的问题时,我相信别人必须这样做。 – 2012-04-06 16:41:45

回答

7

这里的问题是,仅仅运行package目标不足以为您生成启动脚本。它将组装完整的网络应用程序,但没有启动它的单一手段。

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