您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Maven 版本管理

本节中,我们来介绍一下 Maven 是如何进行版本管理的。如何在项目的实际开发中,结合 Maven 来推进项目的进行。正常的项目的开发周期通常是很长的,这个过程当中,需要发布很多个版本,那这些版本如何表示,而我们又应该如何来管理这些版本呢?

那什么是版本管理呢?首先,版本管理是不同于版本控制的。版本控制通常的概念是在软件开发过程中,管理程序,等的变化。更倾向于来追踪项目过程中,不同时期项目的变化。但是,版本管理则不同,通常是指项目过程中,不同时期版本的演化过程。通俗一点讲,版本管理就像人的成长过程中,从婴儿到少年到青年到中年一直到老年这个演变过程的管理;版本控制则更关注细节,例如这个时期,身高从 160cm 长到了 165cm,或者体重 60kg 变为了 62kg 等等。

我们理解了什么是版本管理,那 Maven 是如何做的呢?

通常情况下,Maven 的版本号约定中如下几个部分:

<主版本号>.<次版本号>.<增量版本号>.<里程碑版本号>

由于 Maven 已经维护了将近 20 年,所以,使用 Maven 这个项目的版本演变过程来举例是再合适不过了。我们打开 Maven 的官网,找到 Release Notes,打开便可以看到 Maven 从最开始的版本是如何演变成现在的模样的。(这里由于存在太多版本,所以,我们只了其中一部分)

注意: 有的同学可能会问,里程碑版本里面的 alpha,beat 是什么意思?

这些版本号在一些流行的框架的演变过程中非常常见。

通常情况下,我们在进行项目开发的过程中,会使用到版本控制工具,例如 svn 或者 git,这时候就会涉及到主干,分支以及的概念,那么这里我们简单介绍一下这三个概念。

从下面的图中,我们可以比较清晰地看出,主干,分支与三者之关系:

我们在了解了主干以及分支的概念之后,那么我们如何去创建分支呢?通常情况下我们可以使用 Svn 或者 Git 的创建分支的方式来创建需要的分支,但是,这个时候会存在问题:我们需要手动去新创建出的分支的 pom.xml 中的。既然说到版本管理,那想必 Maven 肯定是可以帮助我们做这件事情的。

那么接下来我们来看一下如何使用 Maven 来创建分支,这里我们使用 Git 配合 Maven 来演示如何创建分支。

我们想要使用 Maven 来帮助我们创建分支,首先我们需要配置 scm ,这样 Maven 就可以来代替 Git 来进行操作。

这里我们在 gitee 上创建仓库来放置我们的项目。

1. 将 scm 配置到 pom.xml 中

<scm>
	<connection>scm:git:git@gitee.com:jhulk/first-project.git</connection>
	<developerConnection>scm:git:git@gitee.com:jhulk/first-project.git</developerConnection>
</scm>

2. 将 maven-release-plugin 配置到 pom.xml 中:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>.</version>
        <conuration>
            <tagNameFormat>${project.version}</tagNameFormat>
            <autoVersionSubmodules>true</autoVersionSubmodules>
        </conuration>
    </plugin>
</plugins>

3. 执行 @H__349@mvn release:branch -DbranchName=1.0.1 -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false 命令

在执行的时候, Maven 会问 branch version 是否为 1.0.1-SNAPSHOT?这个是我们想要的,直接 enter 即可。

执行完成之后,我们查看 Git 的远程仓库中,可以看到新的分支。

在执行的时候,Maven 会问 release version 是否是 1.0.0?这个是否是我们想要的,直接选择 enter 即可。

紧接着,Maven 会问我们 release tag 是否是1.0.0-SNAPSHOT?这个也是我们想要的,直接 ente r即可。

紧接着,Maven 会问我们新的版本是否是1.0.1-SNAPSHOT?这里输入新版本为1.1.0-SNAPSHOT,然后 enter。

执行成功之后,我们更新一下,会发现,主干上的 pom.xml 的版本已经为1.1.0-SNAPSHOT了。

本节当中,我们着重介绍了在 Maven 的世界中,我们一般是如何来约束版本的,以及这些约束所代表的含义,最后,我们还介绍了如何使用 Maven 来管理这些版本。


联系我
置顶