Maven 测试快照';s与发布工件

Maven 测试快照';s与发布工件,maven,testing,release,Maven,Testing,Release,我们使用了我认为非常标准的开发风格。主分支包含下一版本的开发(pom标记为x.y-SNAPSHOT)。当我们进入代码冻结阶段时,我们从master分支准备发布。我们从这个分支执行发布,任何错误都会在这个分支上修复 现在回答我的问题。在准备x.y版本时,我们通常会对基于此版本分支构建的x.y快照进行测试。然而,我们意识到,当测试“通过”时,它通过了带有快照标签的安装程序。因此,要执行一个版本,我们必须更改代码(删除快照标签)并重新编制一个新版本。在我们看来,重新旋转构建只是使我们针对快照所做的任何

我们使用了我认为非常标准的开发风格。主分支包含下一版本的开发(pom标记为x.y-SNAPSHOT)。当我们进入代码冻结阶段时,我们从master分支准备发布。我们从这个分支执行发布,任何错误都会在这个分支上修复

现在回答我的问题。在准备x.y版本时,我们通常会对基于此版本分支构建的x.y快照进行测试。然而,我们意识到,当测试“通过”时,它通过了带有快照标签的安装程序。因此,要执行一个版本,我们必须更改代码(删除快照标签)并重新编制一个新版本。在我们看来,重新旋转构建只是使我们针对快照所做的任何测试无效——需要我们重新测试最终版本

怎么办

我正在考虑建议我们只对非快照构建执行正式测试。如果在本质上是“候选发布版本”的地方发现了bug,我们将在发布分支中修复它们,并更新版本x.y.(z+1),然后重新测试。缺点是,它现在被命名为x.y.z,而不是一个干净的x.y.0版本,其中z是这个版本的候选版本数


有人有过这样的经历吗?这是一个正常的过程,还是我们对测试快照的反应过度?

通常有两种处理方法:

  • maven项目本身使用一些存储库管理器的暂存特性,将工件保存在一个暂存区域中,以便对其进行测试。如果测试失败,则删除暂存回购、删除标记并重新发布

  • 在其他情况下,人们认为版本号是便宜的(当然有无限的供应),所以如果发布失败,只需重新输入下一个版本号

  • 第一种方法意味着您不需要跟踪哪些版本是好的/坏的,但需要人们验证测试的是正确的工件

    第二种方法需要一些额外的工具来识别每个版本的状态,而不需要修改标记


    任何一种都有效,选择你的毒药;-)

    注意(1)中的任何非阶段性部署—如果您需要任何类型的手动验证,并且不能保证构建的工件保留在阶段性区域中,那么您可能最终会得到两个具有相同maven版本但内容不同的工件。这是不好的。@ptyx我想我已经解决了这个问题,如果没有分期风险或跟踪好/坏版本号的方法,您就不能让每个版本通过测试,例如,如果2.4.5是坏的,那么2.4.5会逃脱您的跟踪系统。发现版本号可能比比较sha1更容易,也可能不是,因为您无论如何都应该检查下载的sha1,并且只有在运行安装程序后,当已经太晚时,您才能看到版本。因此,每一种都是一种毒药;-)