Java 多组件版本控制/构建最佳实践
我有一个用Maven构建的Java项目,它聚合了几个组件,每个组件都在自己的Maven项目中。这些组件中的任何一个都可能单独演化 我的项目结构可以描述如下:Java 多组件版本控制/构建最佳实践,java,maven,versioning,Java,Maven,Versioning,我有一个用Maven构建的Java项目,它聚合了几个组件,每个组件都在自己的Maven项目中。这些组件中的任何一个都可能单独演化 我的项目结构可以描述如下: 我的主要项目取决于: my-component-1 my-component-2 等等 现在,所有pom.xml都使用“快照”版本,因此,它们都使用我的存储库中可用的“最新”版本 但一旦我向我的客户发送了一个发布版本,我就应该冻结这些版本,并在我的源代码管理中做一个标记(或等效标记),以便在维护时恢复以前的状态 因此,我的问题是:我
- 我的主要项目取决于:
- my-component-1
- my-component-2
- 等等
如果找到它们之间的关系,请考虑使用<强> Maven多模块<强> >。简而言之,您将拥有一个具有一个版本的父级和一些模块(一些jar..以类似Spring及其子模块的方式)。这将帮助您减少版本管理
你可以考虑使用<强> <强>。它将帮助您自动标记、构建和部署模块,从而更轻松地处理版本管理以及与SCM和存储库的链接。 此外,结合多模块,它将大大帮助您
有很多关于堆栈溢出的主题 我不知道你是否已经知道了。如果你愿意,我可以进一步解释,但是如果你不想,你可能有足够的元素可以自己搜索 直截了当的回答 因此,我的问题是:我是否应该在每个版本之前更改所有pom.xml文件,为组件提供版本号,并将所有内容与此依赖关系版本绑定 是的,你应该。在应用程序生命周期管理中,跟踪更改非常重要。所以,正如您所想象的,正如您所指出的,您确实应该构建并标记每个组件。这可能会很痛苦,但maven realease插件和多模块(即使有一个持续集成平台)可能会更容易 在每次发布之前,我是否需要重新编号/恢复每个版本 原因完全相同:是的 我必须增加它的版本,这样更改就不会影响已有的版本,对吗 是的,你也应该。假设您选择一个常见的版本,如MAJOR.minor.correction,第一个数字表示兼容性中断。次要版本会带来一些中断,但不应该。修正永远不会影响兼容性 使用maven的人通常如何处理这种多组件版本控制的情况 我不能一一回复,但我之前对发布插件和多模块的评论被认为是最佳实践。如果您想更进一步,您可以想象使用更强大的SCM(Clearcase、Perforce,…),但是maven集成较少,没有“良好”的文档记录,社区提供的示例也比SVN或Git少。maven发布插件如果您使用的是多模块
pom.xml
,您应该能够并让它对所有依赖项进行“发布”构建,删除-SNAPSHOT
版本并将其上载到存储库。这就是发布版插件及其工作流程的唯一目的 好奇的是,您是否已经查看了maven发布插件提供的开箱即用功能,发现它不适合您