在多项目构建中似乎有几种方法来构建父pom,我想知道是否有人对每种方式的优点/缺点有任何想法.
拥有父pom的最简单方法是将它放在项目的根目录中,即
myproject/
myproject-core/
myproject-api/
myproject-app/
pom.xml
Run Code Online (Sandbox Code Playgroud)
其中pom.xml既是父项目又是-core -api和-app模块
下一个方法是将父项分离到它自己的子目录中,如中所示
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
Run Code Online (Sandbox Code Playgroud)
父pom仍然包含模块,但它们是相对的,例如../myproject-core
最后,有一个选项,模块定义和父项分开,如
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
Run Code Online (Sandbox Code Playgroud)
父pom包含任何"共享"配置(dependencyManagement,属性等),myproject/pom.xml包含模块列表.
目的是可扩展到大规模构建,因此应该可以扩展到大量项目和工件.
一些奖金问题:
编辑:每个子项目都有自己的pom.xml,我把它留了下来以保持简洁.
我们有一个庞大而深入的模块结构,具有三个"实际"继承层和三到四层模块聚合.
我对真正的继承很好:一个公司范围的超级pom,一个产品范围的父母和一个客户范围的父母,用于产品的自定义.
但我观察到,"空"聚合模块也被定义为其子模块的父级.
如果整个概念与OO中的相同,那么如果聚合模块(除了它们的子模块之外它们是空的),这对我来说没有任何意义,不会给pom添加特定的配置.
是否有其他原因(可能是可操作的)为什么这可能有用?
旁注:pom的介绍在这方面尚不清楚:术语"父"不清楚:它可以表示超级pom(=继承树中的父级)或聚合pom(=文件系统中的父级...)