Java 在多模块Maven项目中,更新模块版本的最佳策略是什么
给定:多模块Maven项目 任务:每次发布后更新版本 我看到两种不同的策略: 策略1在整个更新过程中:更新所有模块的版本,不管是否有更新 策略2最低限度更新:仅更新实际受影响模块的版本 假设我们有以下项目结构:Java 在多模块Maven项目中,更新模块版本的最佳策略是什么,java,maven,version,multi-module,Java,Maven,Version,Multi Module,给定:多模块Maven项目 任务:每次发布后更新版本 我看到两种不同的策略: 策略1在整个更新过程中:更新所有模块的版本,不管是否有更新 策略2最低限度更新:仅更新实际受影响模块的版本 假设我们有以下项目结构: root ---dao ---domain ---web ---site1 ---site2 ---processors ---processor1 ---processor1Service ---processor1Util
root
---dao
---domain
---web
---site1
---site2
---processors
---processor1
---processor1Service
---processor1Util
---processor1Tests
---processor2
---processor2Service
---processor2Util
---processor2Tests
---simulators
---simulator1
---simulator1Service
---simulator1Util
---simulator1Tests
---simulator2
---simulator2Service
---simulator2Util
---simulator2Tests
---etc
所有父pom的包装类型均为pom。所有最终模块都有资源生成类型——jar、war、sar等。
根pom包含dependencyManagement部分,其中列出了所有子模块
战略1:
- release manager RM(或任何人)从“功能”合并更新 分行(s)
- 所有持续集成工作都在进行(让它们正常运行)
- RM在根目录上调用mvn release:versionUpdate-DsetVersion=1.2
- 完成
- RM合并来自“功能”分支的更新
- 所有持续集成工作都在进行(让它们正常运行)
- RM使用subversion工具(git、svn等)检查实际受影响的模块
- RM手动增加受影响模块的版本
- 完成
策略1: 好处:
请分享你的意见。在诸如springframework之类的大型项目中如何处理这个问题我个人绝对支持您的策略1。这就是我工作的公司所采用的策略。与“版本动物园”相比,您提到的HDD空间或升级不需要升级的模块版本的副作用是次要问题 如果您使用OSGI架构,并且这需要非常精确的模块版本化策略,并且如果您一次升级所有版本,这将破坏OSGI的巨大优势(仅热部署需要更新的模块/子模块),那么我将投票支持您的策略2
我还建议您查看一下,哪一个提供了关于如何在多模块maven项目中升级版本的好提示,以及如何在任何CVS中跟踪的好提示谢谢您的回答。为了便于统计,您能告诉我您的项目中大约有多少个模块吗。您是否尝试使用策略2并对此感到失望,或者您一直在使用#1?在工作中,我们使用的是OSGI Arquit体系结构,因此每个jar/模块都会公开自己的版本,因为OSGI的特性。因此,每当升级/修复OCURR时,只需要一个可部署的jar/模块来更新而不是所有项目。但是在以前的J2EE环境中,我们一次升级了所有可部署的/jar模块。您应该根据您的“可部署单元”选择策略。在OSGI中,可部署单元是一个jar,因此您应该为每个模块选择一个唯一的版本。在J2ee环境中,因为可部署单元是一个war,所以不介意一次升级所有依赖项