Java 使用Spring Boot构建的公共服务Pom结构

Java 使用Spring Boot构建的公共服务Pom结构,java,spring,maven,spring-boot,pom.xml,Java,Spring,Maven,Spring Boot,Pom.xml,我有两个项目,其中包含许多不同服务和web应用程序的可重用代码,如CommonService和CommonWeb 我希望我的所有服务项目尽可能多地重用公共服务中的pom配置,但我仍然希望在公共项目中利用spring boot starter pom来帮助设置它们。组织pom层次结构的最佳方式是什么 CommonService和CommonWeb都有代码、依赖项和类似AspectJ编译器的插件。我的AppService是将CommonService作为依赖项添加,还是作为父项添加 我们通过从Spr

我有两个项目,其中包含许多不同服务和web应用程序的可重用代码,如CommonService和CommonWeb

我希望我的所有服务项目尽可能多地重用公共服务中的pom配置,但我仍然希望在公共项目中利用spring boot starter pom来帮助设置它们。组织pom层次结构的最佳方式是什么


CommonService和CommonWeb都有代码、依赖项和类似AspectJ编译器的插件。我的AppService是将CommonService作为依赖项添加,还是作为父项添加

我们通过从Spring启动父级继承公共父级来解决这个问题。此公共父级将是每个项目的父级。这对于微服务体系结构尤其方便

如果您有不同类型的项目,例如HTTP和消息服务,那么您可以拥有POM父级的继承层次结构,其中root始终是Spring引导父级

若您不喜欢父POM的继承层次结构,我建议您分析SpringBoot项目,分析它们是如何组织POM的。这是非常聪明的,但是如果你没有很多不同类型的服务/项目,可能会有点过头


当然,这些POM需要进行适当的版本控制,并作为独立的工件部署到某个工件库中

因为maven父级POM必须在
POM
包装中

除了CommonService和CommonWeb项目之外,您还应该有一个CommonParent maven项目,如下所示:

common (maven aggregate project)
  +- common-service (module with `jar` packaging)
  +- common-web     (module with `jar` packaging)
  \- common-parent  (module with `pom` packaging,
                    and dependent on common-service, common-web)
然后你只需要让你所有项目的POM都是你共同父母的孩子


此外,您应该编写自己的
自动配置
类,并使用Spring Boot提供的
@configurationproperties
封装来构建自己的应用程序属性。这样,下游项目可以通过设置属性(如
common.web.feature1.enabled=false)轻松控制您的公共配置