我有一个Git仓库,其中包含一堆顶级的Maven项目(每个项目都在自己的子目录中,带有一个pom.xml文件)。这里的顶级指的是这些项目直接位于仓库根目录下的子目录中。所有这些项目都应该留在同一个Git仓库中。
repo
+--- projectA
+--- pom.xml
+--- projectB
+--- pom.xml
可以/应该使用独立的Jenkins任务进行构建。因此,我们为projectA和projectB各自创建一个任务。
以前在Subversion中,我能够设置一个Jenkins任务(针对每个项目),仅检出项目源代码,并从pom.xml运行Maven构建。
使用Git模型(可能与所有DVCS一样),这种方式发生了变化,我不确定什么是最佳实践。有几个选项可以考虑,但都不太理想:
- 每个Jenkins任务配置克隆/拉取完整的Git repo,并引用/pom.xml进行Maven构建。因此,任务具有所有代码,但仅构建其中的一部分。
- Git提供子模块(http://book.git-scm.com/5_submodules.html),似乎有点棘手(而且容易出错)
- 创建一个包含所有项目的maven父级(聚合)项目,触发每个项目的构建(只需要单个Jenkins任务)。此pom.xml包含projectA和projectB的元素。
您是否知道更有用的方法来处理此类(非常典型的)设置。你有什么经验?有什么最佳实践吗?