我有一个用 Maven 构建的 Java 项目,它聚合了几个组件,每个组件都在自己的 Maven 项目中。这些组件中的任何一个都可以单独发展。
我的项目的结构可以描述如下:
- 我的主要项目取决于:
- 我的组件 1
- 我的组件 2
- 等等
如今,所有 pom.xml 都使用“快照”版本,因此,它们都使用我存储库中可用的“最新”版本。
但是一旦我将发布版本发送给我的客户,我应该冻结这些版本并在我的源代码控制中创建一个 TAG(或等效项),这样我就可以在维护时恢复以前的状态。
所以,我的问题是:我是否应该在每次发布之前更改所有 pom.xml 文件,为组件提供版本号,并将所有内容与此依赖版本联系起来?另外,如果我有很多组件(我的项目当前有 30 多个小子组件),我是否必须在每次发布之前重新编号/还原每个组件?当单个组件演变时(由于错误修复或增强),我必须增加其版本以使更改不会影响预先存在的版本,对吗?
使用 maven 的人通常如何处理这种多组件版本控制案例?
当然,我可以只依靠我的版本控制标签来恢复到以前的时间点,并在每个版本上标记每个组件,但我不喜欢这种方法,因为依赖版本控制(使用 maven)给出我对打包的内容以及(损坏的)兼容性等关系有更多的控制和可见性。