【问题标题】:Two java maven projects with MVC design: how can they share the same "M" classes?两个采用 MVC 设计的 java maven 项目:它们如何共享相同的“M”类?
【发布时间】:2016-02-24 12:17:02
【问题描述】:

我在两个独立的 maven 项目中开发了一个 JavaEE 应用程序:
- 一个项目是 API
- 另一个是调用第一个项目的 API 的 JSF 应用程序。

它们都共享相同的模型(描述我的数据结构的类)。

如何让这 2 个项目共享同一个模型?我是否应该创建第三个 Maven 项目,其中将包含这些公共类,并且这个第三个项目将成为这两个项目的依赖项?手感似乎有些沉重。有更好的设计吗?

【问题讨论】:

  • 我是否应该创建第三个 Maven 项目,该项目将包含这些公共类,而这第三个项目将成为这两个项目的依赖项:是的。为简单起见,这 3 个项目可以是子模块或根多模块 Maven 项目。
  • 你应该在一个单独的项目中分离你的模型。如果您希望模块松散耦合,还可以使用模块特定对象

标签: java maven design-patterns


【解决方案1】:

我猜你的模型类将被编译成一个单独的交付物,例如一个 JAR 文件。由于每个 Maven 项目对象模型都描述了一个可交付成果,因此为了正确重用代码并将二进制文件包含在两个 Web 应用程序中,最合理的选择是您已经提出的那个。

这样,你的项目可能是这样的:

+ pom.xml (parent, "pom" type packaging with 3 sub-modules) |_ /ModelJAR/pom.xml (model classes, "jar" type packaging) |_ /API/pom.xml (REST? API, maybe "war" type packaging) |_ /WebAPP/pom.xml (web application, maybe "war" type packaging)

正如您所说,API 和 WebAPP 项目都将依赖于模型项目。它可能看起来很麻烦,但是(我承认这是一个品味问题)它清楚地说明了代码中每个可交付成果的数量、性质和位置。我希望你觉得这很有用。

【讨论】:

  • DELIVERABLE 是关键字。总是可以将每个项目拆分成许多细粒度的项目,每个项目都有一组最小的依赖项,但它会给构建带来复杂性和性能缺陷。因此,任务是找到一组好的可交付成果并相应地设置项目结构。在这种情况下,我同意 2 个单独的可交付成果需要一个新项目来定位系统的共享部分。对于开源项目,尽早将系统分成小部分也很有用。因此,每个项目的关注点都可以从外部力量中得到改善。
猜你喜欢
  • 2012-11-02
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多