Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maven分支发布策略,使用subversion维护快照版本号_Maven_Svn_Maven Release Plugin_Release Management - Fatal编程技术网

maven分支发布策略,使用subversion维护快照版本号

maven分支发布策略,使用subversion维护快照版本号,maven,svn,maven-release-plugin,release-management,Maven,Svn,Maven Release Plugin,Release Management,我正在使用maven发布插件创建分支并发布堆栈。我们正在使用subversion 临近发布日期时,我们从主干分支 我们在新分支上开发此版本的功能。 我们在主干上开发新功能 当我们认为分支已经准备好时,我们就从分支发布(将其视为发布候选) 我们测试发布,并在测试通过后发布(到登台) 如果我们需要再次发布,如果测试失败,我们将从分支发布。 Maven release plugin在branch的每个版本中,在进入标记目录(我们版本projects major.minor.patch)的提交上整齐地增

我正在使用maven发布插件创建分支并发布堆栈。我们正在使用subversion

临近发布日期时,我们从主干分支

我们在新分支上开发此版本的功能。 我们在主干上开发新功能

当我们认为分支已经准备好时,我们就从分支发布(将其视为发布候选) 我们测试发布,并在测试通过后发布(到登台)

如果我们需要再次发布,如果测试失败,我们将从分支发布。 Maven release plugin在branch的每个版本中,在进入标记目录(我们版本projects major.minor.patch)的提交上整齐地增加补丁版本(我们版本projects major.minor.patch)

到目前为止还不错。只是主干补丁的版本在每次发布时都不会改变,所以我觉得我们的版本号有可能会出错

解决这个问题的唯一方法似乎是在每次发布之前从主干分支,但这有一大堆与之相关的其他问题

是否有一种专业的方法来维护artifactIds快照版本,使其始终比发布的版本大1?我正在寻找一种自动化的方法,因此我不必检查发布的pom,也不必使用其他工具与主干pom进行比较

或者,我们是否可以这样做:为新特性创建一个新分支,并在当前版本的主干上继续开发,并同意当我们想要发布一个项目时,我们总是分支+发布(而从不分支+发布+发布等)

一旦发布到生产环境中,我们将新的功能分支合并到主干中?
maven能做到这一点吗?

maven发布插件只影响其运行的分支

让我们举个例子。您将发布1.5.0版,您将在trunk上准备的下一个版本是1.6.0。在这种情况下,您应该将主干上的版本切换到1.6.0-SNAPSHOT。然后您可以发布1.5.1、1.5.2,。。。没有主干版本低于分支版本的问题


查看Maven版本插件(目标集)。更改整个项目结构的版本。

我假设您的发布分支包含一个类似于1.2.0-SNAPSHOT的版本,您将以1.2.0的形式发布它。如果您失败(测试等),您将在主干上将其更改为1.2.1等。在此期间,您继续进行1.3.0-SNAPSHOT开发。因此,在释放分支后,您需要将更改从分支合并回主干。也许我误解了……但我真的不明白问题所在。或者换句话说,您将创建发布分支,并决定在分支2.1.0-SNAPSHOT上调用该版本。问题是,如果我们从一个分支发布多次,maven发布插件将无法管理主干的POM版本。因此,我们最终得到了一个快照版本高于主干的分支。请记住,我们希望maven发行版和版本插件在批处理模式下处理所有这些。你有什么建议吗?我们要做的是和你说的相反的过程。我们将在trunk上开发并修复该版本,直到它发布。我们将在分支机构上开发未来的产品。让我们称之为未来。未来分支机构将增加次要编号,例如1.5.10变为1.6.0。所有未来版本的开发都应该在future分支上进行,任何游离分支都应该与future或trunk合并,具体取决于游离分支中发生的更改。一旦版本1.5.10投入生产,我们将future合并到trunk中。鉴于我们所处的情况,这似乎是最好的折衷方案,尤其是受冗长测试阶段的影响(可能需要数周)。