我有 2 个项目,它们是使用 PlayFramework 2.4 开发的。虽然它们在概念上是完全独立的,但它们有一些共同的特点,比如进化管理(Liquibase)、CRUD 管理机制、通知(email、sms)机制等。因此,决定将每个项目拆分为 2 个模块:“通用” core”模块,它包含所有描述的逻辑,“project”模块,它包含项目特定的服务、模板、视图。
在 Play Framework 中实现此目标的推荐方法是“子项目”概念。但这显然不是一种选择,至少有两个原因:
- 项目由不同的团队开发,这就是为什么它们不能位于一个目录结构中的原因
- 这 3 个模块(“核心”和 2 个“项目”模块)必须在单独的 VCS 存储库(Mercurial)中进行版本控制
我目前的解决方案是创建核心模块,并将其作为“项目”Play 应用程序中的依赖项提供。尽管这种方法部分有效,但也存在主要缺点:
- 如果在模块中添加路由文件,它们将覆盖项目路由文件
- 您不能在核心模块中放置视图,因为由于图 1,您无法访问公共资产
- 由于 n.1 和 2 的缺点,您不能将控制器放在核心模块中,因为您不能指定要渲染的视图
- 静态资产(公共目录)不包含在模块分发中
我被迫将通用模板复制到两个项目中,我几乎无法编写通用控制器,这很烦人
感谢任何帮助。也许这可以在核心模块的某种高度定制的构建和发布过程中实现?