Play Framework项目组成

时间:2015-06-28 18:52:26

标签: java playframework sbt playframework-2.4

我有2个项目,使用PlayFramework 2.4开发。虽然它们在概念上是完全分离的,但它们共享一些共同特征,如进化管理(Liquibase),CRUD管理机制,通知(电子邮件,短信)机制等。因此,决定将每个项目分成2个模块:common“核心“模块,其中包含所有描述的逻辑,以及”项目“模块,其中包含项目特定的服务,模板,视图。

在Play Framework中实现这一目标的推荐方法是“子项目”概念。但由于至少有两个原因,显然不是一种选择:

  1. 项目由不同的团队开发,这就是为什么他们不能位于一个目录结构中
  2. 这3个模块(“核心”和2个“项目”模块)必须在单独的VCS回购(Mercurial)中进行版本化
  3. 我目前的解决方案是创建核心模块,并将其作为“项目”Play应用程序中的依赖项提供。尽管这种方法部分有效,但仍存在一些主要缺点:

    1. 如果在模块中添加路径文件,它们将覆盖项目路径文件
    2. 您无法在核心模块中放置视图,因为由于图1,您无法访问公共资产
    3. 由于缺点n.1和2,您无法将控制器置于核心模块中,因为您无法指定要渲染的视图
    4. 静态资产(公共目录)未包含在模块分发中
    5. 我被迫将常用模板复制到两个项目中,我几乎无法编写令人讨厌的常用控制器

      感谢任何帮助。也许这可以通过核心模块的某种高度自定义的构建和发布过程来实现?

1 个答案:

答案 0 :(得分:1)

我认为你不应该将角色核心项目添加为其他2个项目的依赖项。 您可以将核心项目分解为核心类和核心资源。 play框架中的模板和视图是编译类,因此您可以在jar中完美地打包。您创建的模板将与核心类一起打包(或者您也可以打破它们)。您可以将此jar发布到依赖应用程序(如artifactory或nexus)中,并在其他项目中导入。对于资源,您可以像webjars那样打包它们。因此,您可以从其他项目的任何其他视图访问它们。