首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Spring构建的公共服务Pom结构

基于Spring构建的公共服务Pom结构
EN

Stack Overflow用户
提问于 2016-07-28 23:16:59
回答 2查看 757关注 0票数 3

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

我希望我的所有服务项目都能从公共服务中重用尽可能多的pom配置,但我仍然希望利用公共项目中的spring启动启动poms来帮助设置它们。组织pom层次结构的最佳方法是什么?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-29 07:23:30

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

如果您有不同类型的项目(例如HTTP消息传递服务),则可以具有POM父级的继承层次结构,其中根始终是Spring父级。

如果您不喜欢拥有父POMs的继承层次结构的想法,我建议分析Spring项目,它们是如何组织POMs的。这是非常聪明的,但如果您没有很多不同类型的服务/项目,则可能会造成太大的损失。

当然,这些POM需要正确地进行版本化,并作为独立的构件部署到某个工件存储库中。

票数 2
EN

Stack Overflow用户

发布于 2016-07-29 08:33:17

因为maven父POM必须在pom打包中。

除了这样的CommonParent和CommonWeb项目之外,您还应该有一个CommonService maven项目:

代码语言:javascript
复制
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 )轻松地控制您的公共配置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38648212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档