Playframework 2.0 Play Framework[2.4.x]使用子模块

Playframework 2.0 Play Framework[2.4.x]使用子模块,playframework-2.0,sbt,git-submodules,Playframework 2.0,Sbt,Git Submodules,我一直在使用这些文档:并将一个大型项目分为一个主模块和一个子模块 大约7000个编译器错误,大量的咖啡因和一大堆“哇——但愿我以前知道”的话。之后,我让项目再次使用新的模块化布局 现在我想创建第二个子模块 让我们调用主模块ROOT,我们可以将子模块A ModA和子模块B ModB分为两个子模块 ROOT将取决于ModA和ModB 莫达不会依赖任何东西 ModB将取决于ModA 让ModA和ModB成为兄弟会更优雅(阅读:可维护),还是让一系列子模块指示继承流更优雅 ROOT->ModB->Mod

我一直在使用这些文档:并将一个大型项目分为一个主模块和一个子模块

大约7000个编译器错误,大量的咖啡因和一大堆“哇——但愿我以前知道”的话。之后,我让项目再次使用新的模块化布局

现在我想创建第二个子模块

让我们调用主模块ROOT,我们可以将子模块A ModA和子模块B ModB分为两个子模块

ROOT将取决于ModA和ModB

莫达不会依赖任何东西

ModB将取决于ModA

让ModA和ModB成为兄弟会更优雅(阅读:可维护),还是让一系列子模块指示继承流更优雅

ROOT->ModB->ModA

如果(当)我们添加ModC和ModD等,这将变得混乱(ier),所以我希望我们可以用兄弟的模型做到这一点

我相信大部分魔法都出现在这里:

lazy val moduleA = (project in file("modules/ModA")).enablePlugins(PlayScala)

lazy val ROOT = (project in file("."))
    .enablePlugins(PlayScala).dependsOn(ModA).aggregate(ModA)
我假设我可以链接
dependsOn
aggregate
调用

lazy val moduleA = (project in file("modules/ModA")).enablePlugins(PlayScala)

lazy val moduleB = (project in file("modules/ModB")).enablePlugins(PlayScala)

    lazy val ROOT = (project in file("."))
.enablePlugins(PlayScala).dependsOn(ModA)
.aggregate(ModA).dependsOn(ModB).aggregate(ModB)
使用兄弟模型,如何声明ModB对ModA的依赖性?(假设在ModB的build.sbt中)


这应该很好:

lazy val moduleA = (project in file("modules/ModA")).enablePlugins(PlayScala)

lazy val moduleB = (project in file("modules/ModB")).enablePlugins(PlayScala).dependsOn(moduleB)

    lazy val ROOT = (project in file("."))
.enablePlugins(PlayScala).dependsOn(moduleB)
它将通过mod A传递。还请注意,dependsOn和aggregate应该引用lazy val的名称,而不是文件夹名称

我认为在这种情况下,您实际上不需要聚合,因为您有依赖关系。下面是一个更复杂的示例,包含聚合依赖项和多个依赖项:

lazy val moduleA = (project in file("modules/ModA")).enablePlugins(PlayScala)

lazy val moduleC = (project in file("modules/ModC")).enablePlugins(PlayScala)

lazy val moduleB = (project in file("modules/ModB")).enablePlugins(PlayScala).dependsOn(moduleB)

lazy val myapp = (project in file("myapp")).enablePlugins(PlayScala).dependsOn(moduleB, moduleC)

lazy val batch = (project in file("batch")).enablePlugins(PlayScala).dependsOn(moduleB)

lazy val ROOT = (project in file("."))
.aggregate(myapp, batch)
这样,顶层(根)实际上没有代码,也不依赖于任何人,它只是聚合你的webapp和它的配套批处理,两者都依赖于ModB,而ModA本身也依赖于ModA

lazy val moduleA = (project in file("modules/ModA")).enablePlugins(PlayScala)

lazy val moduleC = (project in file("modules/ModC")).enablePlugins(PlayScala)

lazy val moduleB = (project in file("modules/ModB")).enablePlugins(PlayScala).dependsOn(moduleB)

lazy val myapp = (project in file("myapp")).enablePlugins(PlayScala).dependsOn(moduleB, moduleC)

lazy val batch = (project in file("batch")).enablePlugins(PlayScala).dependsOn(moduleB)

lazy val ROOT = (project in file("."))
.aggregate(myapp, batch)