在项目生命周期中应何时使用mvn release?

| 为了澄清这个问题: 我正在寻找既定的最佳做法或对已知做法的赞成/反对分析 按项目生命周期,我的意思是:部署到预集成,集成,质量保证,预生产和生产环境中。 在某些情况下: 我们的项目每周都会部署到集成和质量检查中,目前我们为每个集成部署都创建了一个新版本,但这并不正确。它导致每周更新所有pom,打破了开发人员级别的依赖关系,迫使每个开发人员都要刷新其eclipse配置。我们的工作区很大,而Eclipse无法很好地处理刷新,因此浪费了很多时间。 我对maven发布约定不是太熟悉,并且在使用mvn版本时找不到与应用程序生命周期有关的约定。 如果我们现在使用的模式被接受/正确/建立,我将有另一个问题:)     
已邀请:
我用来避免Eclipse开发人员级别的依赖关系更新问题的方法是在发布变得重要之前,保持相关的主干或分支版本号不变。这样,您可以正确地标记/版本化的版本以进行质量检查等,以便您可以追溯问题,而无需开发人员更新依赖关系。为此,我使用以下命令,但覆盖版本号以获得所需的发行版号,但将当前快照版本重新输入为新快照版本: mvn版本:prepare -DautoVersionSubmodules = true 附言我有一个图表可以说明这一点,但是很遗憾,此论坛中没有足够的权利来附加它。如果有人可以帮助附加,我会很乐意提供。 P.P.S也许现在... 还请注意对早期分支(2.1)和后期分支(2.2)的支持。     
在我们的商店中,我们所有SVN中的POM都具有
<version>9999-SNAPSHOT</version>
(针对其自身的版本以及内部依赖性)。这永远不会改变。 在构建期间,我们有一个简单的蚂蚁
build.xml
,它将版本号(在maven外部建立)作为
-Dversion=...
参数,并且只需执行以下操作:
<replace includes=\"**/pom.xml\" token=\"9999-SNAPSHOT\" value=\"${version}\"/>
<artifact:mvn ... />
该更改是构建过程的工作副本的本地更改-从未签入版本控制。 这样,所有发行版本均具有“真实”版本号,但开发人员实际上不必处理版本号。 就像您在问题中所说的那样,以上内容显然不是执行此操作的正确方法,但是自从我们采用Maven以来,在大约9个月的时间里,它对我们来说效果很好。我们有数十个Maven模块,所有这些模块在QA /发布过程中都处于锁定状态。 这种方法的一个含义是,您要处理的每个分支都需要单独的Eclipse工作区,否则,来自其他分支的项目副本将发生冲突。     
[不是真正的答案,但是我有最好的答案...] 与MNG-624相关。 根据您拥有的项目数量,甚至源控制系统的负担也可能成为问题。 是否有人对Maven快照使用独立的编号方案,以避免搅动版本号?从理论上讲,您可以做没有Maven的事情-在每周的构建中使用某种内部编号系统。根据工作流程的要求,将构建版本部署到不同的存储库;您将需要用于开发人员,质量检查人员的单独存储库,也许需要在两者之间进行集成测试。当您要发布候选版本时,请开始使用非快照版本。不过,我只是在评估Maven-我没有这样做的经验。 某些Nexus文档(适用于专业版)讨论了如何进行构建暂存,这可能是相关的。     
过去,我使用自己设计的编号方案:http://wiki.secondlife.com/wiki/Codeticket_Service 我现在处于需要再次考虑Maven的情况,并且很想重新使用代码票证方案来生成版本号/内部版本号,并通过发布插件应用它们,但无需检查pom文件返回。签入的pom文件将保留SNAPSHOT版本号。 对于那些关心可复制构建的人,可以在构建结果中包括修改后的POM文件。就我个人而言,我更关心跟踪构建工件并确保最终释放出经过测试的完全相同的位,因此,我对复制构建的关注比大多数情况略显虔诚(请参见此处)。     
在Maven用户列表中(我正在参加)中正在进行一个讨论,该讨论似乎很相关。基本上,我们正在讨论如何避免在剪切(发布或功能)分支时必须进行的所有POM编辑。当您创建发行分支时,发行插件可以为您进行编辑,但对于以后需要重新集成的功能分支没有帮助。另外,合并时,所有POM编辑都会引起不必要的痛苦,从主干重新合并基准或从重新合并到主干。 此处讨论的想法基于这样一个概念,即记录工件版本号的正确位置在SCM工具中,而不在POM中。基本上,maven应该能够从与工作区关联的实际SCM标签或分支中得出工件版本号。 请注意,由于Maven的问题跟踪器(例如MNG-2971)上仍有一些悬而未决的问题,因此尚无完整的解决方案。但是它们已经有很多选票的问题,我很乐观他们很快就会解决。     

要回复问题请先登录注册