2016-07-28 50 views
3

我有兩個項目包含許多不同服務和Web應用程序的可重用代碼,例如CommonService和CommonWeb。使用Spring Boot構建常見服務的POM結構

我希望我的所有服務項目都能夠儘可能多地從公共服務中重新使用pom配置,但我仍然想要在常見項目中利用spring引導啓動器poms來幫助設置它們。組織pom層次結構的最佳方式是什麼?

CommonService和CommonWeb都有AspectJ編譯器的代碼,依賴和插件。我的AppService會將CommonService添加爲依賴項還是父項?

回答

2

我們通過從Spring Boot父項繼承的共同父項來解決它。這個共同的父母將是每個項目的父母。這對微服務體系結構來說特別方便。

如果您有不同類型的項目,例如HTTP與消息傳遞服務,你可以擁有POM父項的繼承層次結構,其中root總是Spring Boot父項。

如果你不喜歡擁有父POM的繼承層次結構的想法,我建議分析Spring Boot項目,他們如何組織POM。這非常聰明,但如果你沒有很多不同類型的服務/項目,可能會過度。

當然,這些POM需要正確版本化並作爲獨立的工件部署到某個工件存儲庫。

0

由於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是您共同父母的孩子。


此外,你應該寫自己AutoConfiguration類和使用由Spring啓動提供的@ConfigurationProperites封裝來構建自己的應用程序的性能。因此,下游項目可以通過common.web.feature1.enabled = false等設置屬性輕鬆控制您的常見配置。