Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
在使用git flow发布时,我应该如何更新pom.xml中的版本?_Git_Maven_Versioning_Git Flow - Fatal编程技术网

在使用git flow发布时,我应该如何更新pom.xml中的版本?

在使用git flow发布时,我应该如何更新pom.xml中的版本?,git,maven,versioning,git-flow,Git,Maven,Versioning,Git Flow,在maven项目中,项目的版本包含在pom.xml文件的属性中。在git flow模型中创建新版本时,我需要输入版本号。解释如何完成此操作(没有maven): 创建发布分支 更改版本号并提交 合并发布分支以开发和掌握 此外,它还说: 正是在发布分支的开始,即将发布的版本才被分配了一个版本号,而不是更早的版本号。在此之前,开发分支反映了“下一个版本”的更改,但在发布分支启动之前,不清楚“下一个版本”最终会变成0.3还是1.0。这个决定是在发布分支开始时做出的,并根据项目关于版本号碰撞的规则执行 我

在maven项目中,项目的版本包含在pom.xml文件的属性中。在git flow模型中创建新版本时,我需要输入版本号。解释如何完成此操作(没有maven):

  • 创建发布分支
  • 更改版本号并提交
  • 合并发布分支以开发和掌握
  • 此外,它还说:

    正是在发布分支的开始,即将发布的版本才被分配了一个版本号,而不是更早的版本号。在此之前,开发分支反映了“下一个版本”的更改,但在发布分支启动之前,不清楚“下一个版本”最终会变成0.3还是1.0。这个决定是在发布分支开始时做出的,并根据项目关于版本号碰撞的规则执行

    我在这里看到了与maven相关的两个问题:

  • maven中正在开发的版本将是[下一个版本]-快照。因此,我们不能将下一个版本的决定推迟到创建发布分支的那一刻。当然,如果我们以后可以改变主意,但是我们已经需要在这里输入/some value/了
  • 在创建我们的版本之前,pom.xml中的版本是
    1.1-SNAPSHOT
    。现在我们在发布分支上将其更改为简单的
    1.1
    ,并将其合并到master。好的但我们也应该将该分支合并回去进行开发,为此,我们需要调整版本,例如
    1.2-SNAPSHOT
    。也许我们不应该在发布分支上这样做,因为提交不应该是发布的一部分。实际上,我们可能应该在分支开发之后立即进行此更改,因为开发上的所有未来提交都将用于下一个版本

  • 当我在谷歌上搜索这个问题时,我发现了一些关于maven插件的文章,这些插件可以自动化这个过程,这可能很有趣,但是,这个问题实际上是关于git图应该是什么样子,以及bump提交的版本应该在哪里,而不是我如何使用maven插件实现自动化。

    请记住,git是为Linux内核开发的,它有自己的版本规则

    对于Maven,您应该创建一个发布分支,用于获取下一版本的快照版本。此更改应该是一次提交(即仅更改
    pom.xml
    中的版本号)。合并时,签出
    master
    并使用
    git merge--strategy=ours

    --strategy=ours
    的意思是:通过说“master中的所有内容都已与发布分支正确合并”来进行合并;没有对master进行任何更改。之后,Git将把两个分支视为合并(即没有更改),尽管两个分支中的版本号不同

    为了避免在使用Maven构建
    master
    时出现各种问题,请使用奇数或非常高的版本号,该版本号不会像
    99.DEV-SNAPSHOT
    那样更改

    发布时,从发布分支中的版本中删除
    -SNAPSHOT
    ,然后提交。然后,签出master并再次与
    --strategy=ours
    合并


    注意:如果执行此操作,则不得在发布分支上进行任何其他更改,但必须更改版本。任何其他修补程序都将丢失!您只能选择它们。

    对于Maven,您不应该手动更改版本号

    您应该将“scm”信息添加到pom中,以便让Maven提交并直接推动版本更改

    然后,使用“发布插件”。它将为你做这项工作。假设当前版本为“1.1-SNAPSHOT”,则“release:perform”maven任务将:

    • 将版本更改为1.1、提交、标记此版本并推送它
    • 再次将版本更改为1.2-SNAPSHOT(或1.1.1-SNAPSHOT、2.0-SNAPSHOT…您可以选择下一个版本),提交并推送它
    以下是使用Maven发布插件的项目的git历史摘录:

    * 2345678 - Normal developpement commit (on branch 1.2-SNAPHOT).
    * 5678901 - [maven-release-plugin] prepare for next development iteration
    * 8901234 - (tag: 1.1) [maven-release-plugin] prepare release 1.1
    * 1234567 - Normal developpement commit (on branch 1.1-SNAPHOT).
    
    注1:在发布时,您必须提供下一个版本(本例中为1.2)。如果你改变主意,你可以以后再改变。Maven“version:set version”插件允许您重新分配所有项目层次结构的版本。您只需在下一版本发布之前提交此版本更改


    注2:在发布时,您还可以更改发布版本。即使当前版本是1.1-SNAPSHOT,您也可以确定该版本是2.0版本,下一个开发版本是2.1-SNAPSHOT。

    对于正常版本,只需在合并发布分支后执行快照版本通气:

  • 创建发布分支
    develope
    ,并从版本中删除快照
  • 将其合并到
    master
  • 将其合并到
    develope
  • develope
    上的版本更改为下一个快照版本
  • 同时按下
    master
    develope
  • 当您同时推送所有更改时,团队只会看到快照版本增加

    对于修补程序,这是不可能的,因为您是在
    master
    分支之外创建它的。对于这个场景,有一个解决方案,下面是一个使用原始git命令的示例

    示例:您在
    master
    上有
    1.0.0
    ,并且希望创建
    1.0.1
    修补程序版本。您的开发已经在
    1.1.0-SNAPSHOT

  • git签出主机
  • git签出-b hotfix/1.0.1
  • 做你的修补程序
  • mvn版本:set-DnewVersion=1.0.1
  • git提交-a-m“修补程序1.0.1版”
  • git签出主机
  • git合并修补程序/1.0.1