Maven版本号的约定

快照版与发布版的区别

在实际开发中,项目的版本存在以下两种类型,针对其中的区别差异查找了资料,做一个简单总结:

	  <product.advance.version>1.0-Releases</product.advance.version>
      <product.dto.version>0.0.1-SNAPSHOT</product.dto.version>

Maven中定义版本号的目的在于将发布的项目进行更好的版本管理。那什么是版本管理呢?版本管理是项目整体版本的演变过程管理,如从 1.0-SNAPSHOT 到 1.0-Releases 再到 1.1-SNAPSHOT。

在 Nexus 仓库中,一个仓库一般分为Release仓和SNAPSHOT仓,前者存放正式版本,后者存放快照版本。如果 pom.xml 文件中指定的版本号带有 “-SNAPSHOT”后缀,那么打出的包就是一个快照版本。

那么 SNAPSHOT(快照)版和 Releases(发布)版的区别有哪些呢?其实这两个版本除了用于区别版本类型的作用外,本地获取这些依赖的机制也有所不同。

发布版在构建时构建工具会先从本地仓库中拉取相关依赖,只有本地仓库不存在的情况才会去远程仓库中拉取。而这种方式在团队开发过程中就可能存在冲突,如果两个开发人员A、B同时需要某项目的 1.0-Releases 依赖且都从远程仓库拉取到各自的本地仓库中,假设其中A更改了 1.0-Releases 中的某些内容,但由于发布版的拉取机制,在不更改版本号的前提下,B只能从自己本地获取依赖,无法获得远程仓库的最新内容。

正因为上述原因,SNAPSHOT 版就派上了用场,快照版的拉取机制是优先去远程仓库获取依赖,即使本地仓库已经存在同版本的项目。同时 Maven 针对快照版向远程仓库的查找频率设置四种类型,用于兼顾本地仓库的缓存机制:

  1. always:每次都去远程仓库查看是否有更新
  2. daily:只在第一次的时候查看是否有更新,当天的其他时候则不会查看
  3. interval:允许设置一个分钟为单位的间隔时间
  4. never:不去远程仓库中查找

Mavne的版本号定义约定

上面我们了解到快照版和发布版的区别,现在我们看下版本号的常规约定:

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

主版本和次版本之间,以及次版本和增量版本之间用点号分隔,里程碑版本之前用连字号分隔。下面解释每一部分的意义:

  • 主版本:表示了项目的重大架构变更。
  • 次版本:表示较大范围的功能增加和变化,及修复bug。
  • 增量版本:一般表示重大bug的修复(可忽略)。
  • 里程碑版本:指某一个版本的里程碑(可忽略)。

资料来源:

  1. 《Maven实战》第十三章 — 版本管理
  2. 博主:shark1357【版本号中Snapshot的含义】
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐小成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值