需要有关Play 2.2子模块的项目布局的建议,其他模块作为依赖项

thl*_*lim 7 sbt playframework-2.2

我有一个带模块的现有SBT项目.我想将Play 2.2添加到我的项目中作为子模块.这个新的Play模块将取决于其他模块.

到目前为止我发现的主要是关于Play是支持模块的主要项目.如果Play确实支持此设置,请指出我正确的方向如何做到这一点.谢谢.

我想要的设置(简化):

my_project
\--- desktop_ui
     \--- src/main
     \--- src/test
\--- common
     \--- src/main
     \--- src/test
\--- web_ui (Play framework)
     \--- app/controllers
     \--- app/views
     \--- app/models
     \--- conf
Run Code Online (Sandbox Code Playgroud)

vpt*_*ron 3

两种选择:

1) 有一个“空”主项目,聚合了 3 个子项目:

root
\--- project
    \--- Build.scala
\--- web_ui
\--- common
\--- desktop_ui
Run Code Online (Sandbox Code Playgroud)

在 Build.scala 中是这样的:

lazy val common = Project(id = "common", base = file("common"))
lazy val desktopUi = Project(id = "desktop_ui", base = file("desktop_ui")
lazy val webUi = play.Project(name = "web_ui", path = file("web_ui"))
.dependsOn(common, desktopUi)
Run Code Online (Sandbox Code Playgroud)

惰性 val root = Project(id = "root", base = file(".")).aggregate(common,desktopUi,webUi)

使用此选项,您可以从根文件夹启动 sbt 并构建所有项目。您还可以在此独特的构建定义中定义所有设置和依赖项。

2) 可以使用另一种布局来保持子项目彼此独立。我倾向于更喜欢这种方式,因为它更干净(例如,我可以common作为一个独立的项目工作,而不是作为子模块),但构建整个系统不太方便。

root
\--- web_ui
    \--- project
        \--- Build.scala
\--- common
     \--- project
        \--- Build.scala
\--- desktop_ui
     \--- project
        \--- Build.scala
Run Code Online (Sandbox Code Playgroud)

在这里,每个项目都是独立的(如果需要,您可以使用 build.sbt 而不是 Build.scala,请参阅 sbt 文档)并且在 web_ui/project/Build.scala 中:

lazy val common = RootProject(file("../common"))
lazy val desktopUi = RootProject(file("../desktop_ui"))

val main = play.Project(name = "web_ui", path = file("web_ui")).dependsOn(common, desktopUi) 
Run Code Online (Sandbox Code Playgroud)

在这里,root 只是用来将所有内容收集在一个文件夹中,然后 play 项目引用其他模块。