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)
两种选择:
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 项目引用其他模块。
| 归档时间: |
|
| 查看次数: |
1530 次 |
| 最近记录: |