2015-05-22 68 views
1

我有一些玩框架Web項目,由3個邏輯部分組成:一個用戶網站,一個管理區域和AKKA演員。拆分播放項目到零件

它正在慢慢成長,我需要重新啓動生產服務器進行每一個小改動。這就是爲什麼我決定將該項目分成三部分。管理區域與數據庫和演員通信,用戶界面也與演員溝通,演員與網絡部分和數據庫進行通信。 並且每個部分都可以或多或少無痛地重新啓動而無需重新啓動其他部分。但我不想拆分項目,只從一個代碼庫中生成不同的JARS。可能嗎?

另一個問題是如何在Play框架環境中單獨啓動akka演員?

+1

如果我正確理解你的話,你可以使用3個不同的可執行文件,每個文件在單獨的虛擬機上運行,​​並使用參與者(遠程處理)在服務之間進行通信。同時,您希望將其全部置於具有子項目的單個邏輯項目下。 –

+0

是的。現在我正在使用生成一個exec jar的./activator stage命令,然後運行這個jar – Oleg

回答

4

如果你想有你在不同的JVM各自獨立運行,仍然有一個單一的SBT項目,你可以做這樣的JAR 3 ... 項目結構在SBT:

root 
    - admin 
    - UI 
    - DB 

當您構建root時,可以單獨或全部構建每個子項目。

要生成單獨的JAR,您可以使用sbt-assembly插件或onejar或任何其他jar包裝程序。每個JAR將包含一個「Main」類(使用main方法),如果在常規Servlet容器上運行它,則Play子項目除外。如果您在嵌入式Jetty上運行遊戲,它也可以有main

現在對於一些鏈接:

  • SBT multi-project設置
  • Akka remoting
  • SBT Assembly(JAR打包)
  • Sample遠程處理阿卡的項目,你的情況相符:客戶端 - 服務器,其中客戶端是一個子項目和服務器是另一個。它可能不是最好的參考,但你可以從那裏複製很多結構。

要開始我會將您的版本從build.sbt遷移到'Build.scala`。將Play項目移動爲SBT子項目並使其生成。當這項工作開始分裂它。