2012-03-31 68 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腳本。