【发布时间】:2010-12-31 19:44:54
【问题描述】:
似乎有几种方法可以在多项目构建中构建父 pom,我想知道是否有人对每种方式的优点/缺点有任何想法。
拥有父 pom 的最简单方法是将其放在项目的根目录中,即
myproject/
myproject-core/
myproject-api/
myproject-app/
pom.xml
其中 pom.xml 既是父项目,也是描述 -core -api 和 -app 模块的地方
下一个方法是将父级分离到它自己的子目录中
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
父 pom 仍然包含模块但它们是相对的,例如../myproject-core
最后,可以选择将模块定义和父级分开,如下所示
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
父 pom 包含任何“共享”配置(dependencyManagement、属性等),而 myproject/pom.xml 包含模块列表。
目的是可扩展到大规模构建,因此应该可扩展到大量项目和工件。
几个额外的问题:
- 哪里是定义各种共享配置的最佳位置,如源代码控制、部署目录、常用插件等。(我假设是父级,但我经常被这个咬到,它们最终出现在每个项目而不是普通项目)。
- maven-release 插件、hudson 和 nexus 如何处理您如何设置多项目(可能是一个巨大的问题,如果有人被如何设置多项目构建所吸引,那就更重要了)?
编辑:每个子项目都有自己的 pom.xml,为了保持简洁,我把它省略了。
【问题讨论】:
-
每个模块都有自己的 pom 吗?我的项目有一个父 pom,但每个模块也有一个 pom。 (也许是你描述的第四种方式)
-
啊,是的,我会编辑和更新。每个子模块也有自己的 pom。
-
作为一个更新,我可以看到第二个选项的一个优点是它更容易在 Eclipse 中管理,如果第一个和第三个示例中的根 pom.xml 很难包含子模块是 Eclipse 中的独立项目。
标签: java maven-2 build-process