我正在开发一个Spring Boot,Hibernate,Thymeleaf项目,我对实现重用我的实体层的最佳架构感到有点困惑。
我有2个Maven父项目,我想通过创建一个ProjectEntity来实现以下项目层次结构(在父项中重用它)
ProjectAPIParent
a)ProjectEntity
b)ProjectRepository
c)ProjectAPI
ProjectClientUIParent
a)ProjectEntity
b)ProjectClientUI
问题是一个子项目不能有多个父母。
现在,我可以选择仅创建一个基本父项目,但问题是听起来不对,因为我希望客户端和服务器端项目之间完全松散耦合。
在这种情况下,您建议我做什么?
您的意见很重要。谢谢:))
答案 0 :(得分:2)
采取这种决定并不是一个惯用的规则。
个人,我选择作为工件的父级,该项目表现出最强的自然所有权关系。
例如,如果ProjectEntity
源代码设计为仅由ProjectAPIParent
项目的开发人员修改并发布,ProjectAPIParent
应该很可能是Maven父级(以及ProjectEntity
模块的聚合器pom)。而ProjectClientUIParent
应该使用ProjectEntity
作为依赖。
但是如果你没有设法清楚地识别出与这个神器拥有这种关系的父项目,你可能不应该让ProjectEntity
成为他们中没有一个的孩子。
在这种情况下,使ProjectEntity
这两个项目的依赖更有意义。
作为旁注,无论您对父pom的选择如何,您都可以在ProjectEntity
和{{}}的聚合器pom.xml中将ProjectAPIParent
定义为Maven模块(不与Maven子项混淆) {1}}。
答案 1 :(得分:2)
您可以建立以下内容:
+- ApplicationParent
+- APIParent
| +- ProjectAPI
| +- Repository
+- ClientUIParent
| +- ClientUI
+- Entity
ApplicationParent
POM:
<modules>
<module>APIParent</module>
<module>ClientUIParent</module>
</modules>
APIParent
POM:
<modules>
<module>../Entity</module>
<module>Repository</module>
<module>ProjectAPI</module>
</modules>
ClientUIParent
POM:
<modules>
<module>../Entity</module>
<module>ClientUI</module>
</modules>
你可以:
ApplicationParent
)单独构建APIParent
和ClientUIParent
当然,您必须注意APIParent
和ClientUIParent
不要在本地同时单独构建。
在ApplicationParent
<dependencyManagment>
声明一次