【发布时间】:2018-08-31 12:32:30
【问题描述】:
我有几个 maven 项目:
- commons-lib(简单的 Java 项目)
- 用户服务(Spring-Boot 驱动的项目)
- 复合服务(Spring-Boot 驱动的项目)
- 前端服务(Spring-Boot-/Angular2 驱动的项目)
- all-services-parent(构建其他一切的父项目)
虽然 commons-lib 不太可能单独发布,但所有其他项目(父项目除外)可能会单独发布。
如果列表中的前四个是第五个的子模块,它们是否必须将其父级设置为父级(例如 all-services-parent)作为回报?
由于我想在用户服务和复合服务中包含 commons-lib,我知道我必须先构建它。但是:上面的每个服务都可以单独发布——那么哪种建筑结构最适合我的需要?
会是:
-- all-services-parent
|-- (maven sub-module) commons-lib
|-- (maven sub-module) user-service
|-- (maven sub-module) composite-service
|-- (maven sub-module) frontend-service
或:
-- all-services-parent
|-- user-service-parent
|-- (maven sub-module) commons-lib
|-- (maven sub-module) user-service
|-- composite-service-parent
|-- (maven sub-module) commons-lib
|-- (maven sub-module) composite-service
|-- frontend-service
第二个构建结构允许我通过在 all-services-parent 上调用“mvn clean install”来构建所有 JAR,同时仍然能够通过在相应父级上调用“mvn clean install”来正确构建单独的项目,但是真的是这样吗?
在我当前的设置中,我尝试使用第一个建筑结构,但因为例如复合服务将“spring-boot-starter-parent”设置为其父级,我无法访问“all-services-parent”-模块中的属性或任何内容。
我阅读了Maven parent pom vs modules pom(一个起初看起来很有希望的问题),但它并没有像我希望的那样适用于我的案例。
【问题讨论】:
标签: java maven spring-boot