【发布时间】:2012-02-13 22:09:39
【问题描述】:
我有一个 Git 存储库,其中包含一堆顶级 maven 项目(每个项目都位于它们自己的带有 pom.xml 的子目录中)。这里的顶级意味着这些项目位于存储库根目录下的子目录中。所有这些项目都应保留在同一个 Git 存储库中。
repo
+--- projectA
+--- pom.xml
+--- projectB
+--- pom.xml
它们可以/应该由独立的 jenkins 工作构建。所以我们有一个项目 A 和一个项目 B 的工作。
在使用 Subversion 之前,我能够设置一个 Jenkins 作业(针对每个项目),该作业将仅检查项目源并从 pom.xml 运行 Maven 构建。
对于 Git 模型(可能与所有 DVCS 相同),这会发生变化,我不确定最佳实践是什么。我看到了几个选项,但没有一个是我真正喜欢的:
- 每个 Jenkins 作业都是 configured 来克隆/拉取完整的 Git 存储库和 指的是 Maven 构建的 /pom.xml。所以工作 拥有所有代码,但只构建其中的一部分。
- Git 提供子模块 (http://book.git-scm.com/5_submodules.html) 处理起来有点棘手(并且很容易折断)
- 创建一个 maven 父(包含所有项目的聚合器)项目,该项目 触发每个项目构建(有一个詹金斯工作)。这个 pom.xml 包含 projectA 和 projectB 的元素。
您是否看到任何更有用的方法(非常典型的设置)。你的经验是什么?有什么最佳做法吗?
【问题讨论】:
-
我非常同意 martin.ahrer 的观点,与 Subversion 相比,Git 无法签出 repo 的子项目是一个限制因素。我很好地回答这个问题会很棒。