Java - Maven - 在客户端和服务器端项目中重用实体层

标签 java spring maven spring-boot

我正在从事 Spring Boot、Hibernate、Thymeleaf 项目,我对实现最佳架构以重用我的实体层感到有点困惑。

我有 2 个 Maven 父项目,我想通过创建一个 ProjectEntity(在两个父项目中重用它)来实现下面的项目层次结构

  1. 项目API父类

    a) 项目实体

    b) 项目库

    c) 项目API

  2. 项目客户端UIParent

    a) 项目实体

    b) 项目客户端

问题是一个子项目不能有多个父项目。

现在,我可以选择只创建一个基础父项目,但问题是这听起来不对,因为我希望客户端和服务器端项目之间完全松散耦合。

在这种情况下你会建议我做什么?

您的意见很重要。谢谢:)

最佳答案

做出这种决定并没有真正的惯用规则。

就个人而言,我选择作为一个 Artifact 的父级,该项目表现出最强的自然所有权关系。

例如,如果 ProjectEntity 源代码设计为只能由 ProjectAPIParent 项目的开发人员修改并随其发布,则 ProjectAPIParent 应该是很可能是 ProjectEntity 模块的 Maven 父级(及其聚合器 pom)。并且 ProjectClientUIParent 应该使用 ProjectEntity 作为依赖项。

但是,如果您无法清楚地识别与此 Artifact 拥有此类关系的父项目,则您可能不应该将 ProjectEntity 设为它们中任何一个的子项目。
在这种情况下,使 ProjectEntity 成为这两个项目的依赖项更有意义。


作为旁注,无论您对父 pom 选择什么,您都可以在 ProjectAPIParent 的聚合器 pom.xml 中将 ProjectEntity 定义为 Maven 模块(不要与 Maven 子模块混淆) ProjectClientUIParent

关于Java - Maven - 在客户端和服务器端项目中重用实体层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48629984/

相关文章:

java - 如何在pom中配置maven-release-plugin来模拟命令行上的-Dgoals=deploy

java - 如何将缺少的 Maven 库添加到 Jetty

java - OS X 10.10 优胜美地中的 Apache Tomcat

java - java多线程中的锁不起作用

java - Spring Boot 1.5.2 Controller 层测试

java - 将一个测试资源移动到 Maven 中磁盘上的某个位置

java - 如何发送对象作为 JSON Web token 的一部分?

Java Chrome Selenium CI 测试随机挂起 3 小时

java - Jackson JsonIgnore 在 kotlin 中不起作用

java - Spring 监听器未拾取 JMS 消息