使用 Maven / Git 聚合多个项目的版本控制
Version control for aggregatation of multiple projects using Maven / Git
我有一个由多个子系统组成的 BigSystem。每个子系统都是一个单独的项目,编译成一个应用程序,有自己的发布周期和 Git 存储库,并单独维护。 BigSystem 只是它所包含的子系统的集合。
我想标记和维护与特定版本的子系统相关的 BigSystem 版本,即通过构建 BigSystem-1.1.0,我实际上会构建 SubSystemA-1.0.1、SubSystemB-2.2.0 和 SubSystemC -2.5.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 子模块来实现这一点,但我一直未能找到一个干净的解决方案。有小费吗?谢谢!
Git 子模块将帮助聚合 源依赖项 ,这意味着 BigSystem
将记录每个子系统源代码库的确切 SHA1。
这与每个子系统的构建方式不同构建:它可以使用以下方法构建:
- 源依赖项,在这种情况下,每次需要生成子系统交付时都构建所有依赖项
- 二进制依赖,在这种情况下,源 SubSystemA 包含一个 pom.xml,其中 声明 它需要编译的确切版本和依赖。
这也意味着由子系统编译产生的交付存储在像 Nexus 这样的工件存储库中。
我有一个由多个子系统组成的 BigSystem。每个子系统都是一个单独的项目,编译成一个应用程序,有自己的发布周期和 Git 存储库,并单独维护。 BigSystem 只是它所包含的子系统的集合。
我想标记和维护与特定版本的子系统相关的 BigSystem 版本,即通过构建 BigSystem-1.1.0,我实际上会构建 SubSystemA-1.0.1、SubSystemB-2.2.0 和 SubSystemC -2.5.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 子模块来实现这一点,但我一直未能找到一个干净的解决方案。有小费吗?谢谢!
Git 子模块将帮助聚合 源依赖项 ,这意味着 BigSystem
将记录每个子系统源代码库的确切 SHA1。
这与每个子系统的构建方式不同构建:它可以使用以下方法构建:
- 源依赖项,在这种情况下,每次需要生成子系统交付时都构建所有依赖项
- 二进制依赖,在这种情况下,源 SubSystemA 包含一个 pom.xml,其中 声明 它需要编译的确切版本和依赖。
这也意味着由子系统编译产生的交付存储在像 Nexus 这样的工件存储库中。