我有两个项目,包含许多不同服务和web应用程序的可重用代码,例如CommonService和CommonWeb。
我希望我的所有服务项目都能从公共服务中重用尽可能多的pom配置,但我仍然希望利用公共项目中的spring启动启动poms来帮助设置它们。组织pom层次结构的最佳方法是什么?
CommonService和CommonWeb都有代码、依赖项和类似于AspectJ编译器的插件。我的AppService是将CommonService添加为依赖项,还是作为父级添加CommonService?
发布于 2016-07-29 07:23:30
我们通过具有继承自Spring父级的公共父级来解决这个问题。此公共父项目将是每个项目的父项目。这对于微服务体系结构来说尤其方便。
如果您有不同类型的项目(例如HTTP消息传递服务),则可以具有POM父级的继承层次结构,其中根始终是Spring父级。
如果您不喜欢拥有父POMs的继承层次结构的想法,我建议分析Spring项目,它们是如何组织POMs的。这是非常聪明的,但如果您没有很多不同类型的服务/项目,则可能会造成太大的损失。
当然,这些POM需要正确地进行版本化,并作为独立的构件部署到某个工件存储库中。
发布于 2016-07-29 08:33:17
因为maven父POM必须在pom打包中。
除了这样的CommonParent和CommonWeb项目之外,您还应该有一个CommonService 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,成为你共同父母的孩子。
此外,您应该编写自己的AutoConfiguration类,并使用Spring提供的@ConfigurationProperites封装来构建自己的应用程序属性。这样,下游项目就可以通过设置属性(如common.web.feature1.enabled = false )轻松地控制您的公共配置。
https://stackoverflow.com/questions/38648212
复制相似问题