我有一个Git存储库,其中包含一堆顶级Maven项目(每个项目都位于带有pom.xml的自己的子目录中)。这里的顶层意味着这些项目位于存储库根目录下的子目录中。所有这些项目应保留在相同的Git存储库中。
repo +--- projectA +--- pom.xml +--- projectB +--- pom.xml
它们可以/应该由独立的詹金斯工作建立。因此,我们为projectA有一份工作,为projectB有一份工作。
以前使用Subversion,我能够为每个项目设置一个Jenkins作业,该作业仅检出项目源并从pom.xml运行Maven构建。
对于Git模型(可能与所有DVCS相同),这种情况会发生变化,我不确定什么是最佳实践。我看到了一些选择,但我真的不喜欢这些选择:
您是否看到任何其他有用的方法(非常典型的设置)。你有什么经验?有最佳做法吗?
我认为您正在为此而努力。如果这些项目作为版本单位发布,则实际上应该创建一个父POM。但是您可能应该只有一个CI工作。如果希望该构建快速进行,则可以将其配置为仅构建自上次构建以来已更改的模块(“构建”部分中的高级按钮-“增量构建- 仅构建已更改的模块”)。您还可以告诉Jenkins“在必要时执行并发构建”以一次测试多个提交。
但是我很好奇为什么您认为您想要多个CI工作?如果您认为这两个项目具有不同的生命周期,则可能应该分别对它们进行版本控制,因此应该在单独的git存储库中。不要保存git存储库,它们很便宜。实际上,几乎在每种情况下,交易者都越多。
通常,您希望给定的pom生成单个工件。聚集器poms可用于将较大工件的一部分分解为子模块,但前提是这些子模块不是自己释放的。