Playframework 2.0 使用运行play server并编译依赖项的play framework创建共享项目或模块

Playframework 2.0 使用运行play server并编译依赖项的play framework创建共享项目或模块,playframework-2.0,sbt,build-process,typesafe-activator,Playframework 2.0,Sbt,Build Process,Typesafe Activator,我希望将我的项目组件清晰地划分为不同的部分。在使用maven的其他项目中,我已经多次这样做了,但是我想利用play/activator命令,当文件或依赖文件发生更改时,该命令运行play服务器来构建/部署所有项目。最后,我会根据单个“核心”项目或模块,最终得到多个可部署单元 在大多数情况下,核心模块由业务逻辑和域模型对象组成,它们成为其他项目可以利用的库。下面是一个布局示例 my-app-web-site(play)---\ /--Partner-api

我希望将我的项目组件清晰地划分为不同的部分。在使用maven的其他项目中,我已经多次这样做了,但是我想利用play/activator命令,当文件或依赖文件发生更改时,该命令运行play服务器来构建/部署所有项目。最后,我会根据单个“核心”项目或模块,最终得到多个可部署单元

在大多数情况下,核心模块由业务逻辑和域模型对象组成,它们成为其他项目可以利用的库。下面是一个布局示例

my-app-web-site(play)---\              /--Partner-api
                         \            /
                          CORE project
                          /           \  
my-app-admin-site(play)--/             \--Android mobile
在理想的世界里,我会跑步

./activator ~run
我正在开发的web应用程序将启动,我对核心库/模块所做的任何更改都将像传统play web应用程序中的任何其他对象一样进行编译和部署

问题是。。仅使用play(播放)或activator(激活器)命令即可实现此功能,还是需要单独的sbt设置

--编辑

所以我想出来了!为了实现这一点,我将当前两个名为“newburyCore”和“newburyWeb”的项目放在一个子文件夹中,并将activator和activator-version.jar复制到新的根目录中。接下来,我用一个简单的Build.scala创建了一个项目dir,它使web项目依赖于核心项目。在这一点上,这是非常小的代码:

import sbt._
import Keys._

object BuildSettings {
  val buildOrganization = "cti"
  val buildVersion      = "1.0.0"
  val buildScalaVersion = "2.10.0"

  val buildSettings = Defaults.defaultSettings ++ Seq (
    organization := buildOrganization,
    version      := buildVersion,
    scalaVersion := buildScalaVersion
  )
}

object RootBuild extends Build {
  import BuildSettings._
  lazy val root = Project(id = "root", base = file("."), settings = buildSettings)
    .aggregate(newburyCore, newburyWeb)

  lazy val newburyCore = Project(id = "newburyCore", base = file("newburyCore"), settings = buildSettings)

  lazy val newburyWeb = Project(id = "newburyWeb", base = file("newburyWeb"), settings = buildSettings)
    .dependsOn(newburyCore)
}
项目布局如下所示

/newbury
        activator
        activator.jar
        /project
                /Build.scala
        /newburyCore
        /newburyWeb
现在在newbury文件夹中,我可以启动activator,将项目更改为newburyWeb并执行~run。这正是我想要的。play服务器运行,core中的所有依赖项在我进行更改时被编译,并反映在newburyWeb项目和相应的网页中

./activator

>project newburyWeb

[newburyWeb] ~run

我就是这样做的。我找不到任何这样做的文档,在搜索网页时,我从sbt文档和play文档中找到了一些片段。这里的神奇之处在于播放服务器的运行,这是我的问题的核心。希望这有助于人们做一个多项目播放应用程序

您签出Gilt activator模板()了吗?听起来和你做的很相似


此外,您可能希望将您的编辑作为您自己问题的答案。

那么……您的问题是什么?我只能想象一个人会是什么样子。