使用Maven / Git聚合多个项目的版本控制

时间:2015-07-22 05:42:37

标签: git maven configuration-management

我有BigSystem,它由多个SubSystems组成。每个子系统都是一个单独的项目,它编译成一个应用程序,有自己的发布周期和Git存储库,并且是单独维护的。 BigSystem只是它所包含的子系统的聚合。

我想标记和维护BigSystem相对于特定版本的SubSystems的版本,即通过构建BigSystem-1.1.0,我实际上将构建SubSystemA-1.0.1,SubSystemB-2.2.0和SubSystemC-2.5 0.0。

BigSystem-1.0.0
  SubSystemA-1.0.1
  SubSystemB-2.0.0
  SubSystemC-2.0.4

BigSystem-1.1.0
  SubSystemA-1.0.1
  SubSystemB-2.2.0
  SubSystemC-2.5.0

BigSystem-1.2.0-SNAPSPHOT
  SubSystemA-1.0.2-SNAPSHOT
  SubSystemB-2.2.0
  SubSystemC-2.6.0-SNAPSHOT

我一直在探索Maven聚合,Maven继承和Git子模块来实现这一目标,但我还没有找到一个干净的解决方案。有小费吗?谢谢!

1 个答案:

答案 0 :(得分:1)

Git子模块将有助于聚合源依赖,这意味着for(j = 0; j < i; j++) 将记录每个SubSystem源库的确切SHA1。

这与构建每个子系统的方式不同:它可以使用以下方式构建:

  • 源依赖项,在这种情况下,每次需要生成子系统交付时都构建所有依赖项
  • 二进制依赖,在这种情况下,SubSystemA的源包含一个pom.xml,声明它需要编译的确切版本和依赖。
    这也意味着编译SubSystem所产生的交付存储在像Nexus这样的工件库中。