第二章--SpringWeb应用开发篇

二、Spring 源码版本命名规则及下载安装

2.1、Spring源码版本命名规则

(1) 首先看看某些常见软件的版本号:

  • Linux Kernel: 0.0.1 , 1.0.0 , 2.6.32 , 3.0.18 ...,若用 X.Y.Z 表示,则偶数 Y表示稳定版本,奇数 Y 表示开发版本
  • Windows: Windows 98 , Windows 2000 , Windows XP , Windows 7 , Windows 10 ...,最大的特点是杂乱无章,毫无规律。
  • SSH Client: 0.9.8。
  • OpenStack: 2014.1.3 , 2015.1.1.dev8 。

从上可以看出,不同的软件版本号风格各异,随着系统的规模越大,依赖的软件越多,如果这些软件没有遵循一套规范的命名风格,容易造成 Dependency Hell。所以当我们发布版本时,版本号的命名需要遵循某种规则,其中 Semantic Versioning 2.0.0 定义了一套简单的规则及条件来约束版本号的配置和增长。本文根据 Semantic Versionning 2.0.0 和 Semantic Versioning 3.0.0 选择性的整理出版本号命名规则指南。

(2)版本号命名规则指南

  • 版本号的格式为 X.Y.Z(又称 Major.Minor.Patch),递增的规则为:

    • X 表示主版本号,当 API 的兼容性变化时,X 需递增。
    • Y 表示次版本号,当增加功能时(不影响 API 的兼容性),Y 需递增。
    • Z 表示修订号,当做 Bug 修复时(不影响 API 的兼容性),Z 需递增。
  • 详细的规则如下:
    • X, Y, Z 必须为非负整数,且不得包含前导零,必须按数值递增,如 1.9.0 -> 1.10.0 -> 1.11.0
    • 0.Y.Z 的版本号表明软件处于初始开发阶段,意味着 API 可能不稳定;1.0.0 表明版本已有稳定的 API。
    • 当 API 的兼容性变化时,X 必须递增,Y 和 Z 同时设置为 0;当新增功能(不影响 API 的兼容性)或者 API 被标记为 Deprecated 时,Y 必须递增,同时 Z 设置为 0;当进行 bug fix 时,Z 必须递增。
    • 先行版本号(Pre-Release)意味该版本不稳定,可能存在兼容性问题,其格式为:X.Y.Z.[a-c][正整数],如 1.0.0.a1,1.0.0.b99,1.0.0.c1000。
    • 开发版本号常用于 CI-CD,格式为 X.Y.Z.dev[正整数],如 1.0.1.dev4。
    • 版本号的排序规则为依次比较主版本号、次版本号和修订号的数值,如 1.0.0 < 1.0.1 < 1.1.1 < 2.0.0;对于先行版本号和开发版本号,有:1.0.0.a100 < 1.0.0,2.1.0.dev3 < 2.1.0;当存在字母时,以 ASCII 的排序来比较,如 1.0.0.a1 < 1.0.0.b1。

注意:版本一经发布,不得修改其内容,任何修改必须在新版本发布!以下是一些常用的修饰的词:

  • Snapshot 版本代表不稳定、尚处于开发中的版本
  • Alpha: 内部版本
  • DEV: 开发版本(Development)
  • Beta: 测试版
  • Demo: 演示版
  • Enhance: 增强版
  • Free: 自由版
  • Full Version: 完整版,即正式版
  • Final:最终版,正式版
  • LTS: 长期维护版本(Long Term Support),一般为18个月。
  • Pro(professional):专业版
  • Plus:加强版
  • Retail:零售版
  • Shareware 共享版,虽然不会要求注册但是一般也有功能限制
  • SR :修正版(Senior,中文解释为资深)
  • Trial :试用版(一般有时间或者功能限制)
  • Release : 发行版
  • RC : 即将作为正式版发布(Release Candidat)
  • Standard : 标准版
  • Ultimate: 旗舰版
  • Upgrade: 升级版

(3)Spring版本命名规则

  1. Release 版本则代表稳定的版本
  2. GA 版本则代表广泛可用的稳定版 ( General Availability )
  3. M 版本则代表里程碑版( M 是 Milestone 的意思)具有一些全新的功能或是具有里程碑意义的版本。

2.2、Spring5源码下载

来源于: https://javaguide.net

微信公众号:不止极客

百万架构师的第二课:设计模式:Spring 源码版本命名规则及下载安装的更多相关文章

  1. 深入浅出!阿里P7架构师带你分析ArrayList集合源码,建议是先收藏再看!

    ArrayList简介 ArrayList 是 Java 集合框架中比较常用的数据结构了.ArrayList是可以动态增长和缩减的索引序列,内部封装了一个动态再分配的Object[]数组 这里我们可以 ...

  2. Spring源码解析(一)开篇

    前言 Spring源码继承结构比较复杂,看过以后经常会忘记.因此,记录一下源码分析的过程,方便以后回顾.本次分析的Spring源码版本为3.2.15. 另外,一提Spring就是IOC.DI等等,我们 ...

  3. Java之美[从菜鸟到高手演变]之Spring源码学习 - 环境搭建

    准备工作 1.下载安装STS(Spring Tool Suite),在eclipse market里直接搜索.下载.安装.2.下载安装gradle, Spring源码使用gradle构建,下载后解压到 ...

  4. spring源码_下载以及转入eclipse (2016-11-08)

    本例spring源码版本是4.3.0的, 所以jdk需要准备1.8的(不同版本源码要求的jdk不一样) 1.8版本myeclipse10无编译环境,只有运行环境,出现点问题,下载最新版本的Eclips ...

  5. 【原】Spring源码浅析系列-导入源码到Eclipse

    用了Spring几年,平时也断断续续在项目里看过一些源码,大多都是比较模糊的,因为一旦从一个地方进去就找不到方向了,只能知道它大概是做了什么事能达到这个功能或者效果,至于细节一般没有太深入去研究.后来 ...

  6. Spring源码分析——源码分析环境搭建

    1.在Windows上安装Gradle gradle工具类似于maven,用于项目的构建,此处主要用于构建spring源码,以便我们将spring源码导入eclipse. 开发环境 Java:JDK8 ...

  7. 【Spring源码解读】bean标签中的属性

    说明 今天在阅读Spring源码的时候,发现在加载xml中的bean时,解析了很多标签,其中有常用的如:scope.autowire.lazy-init.init-method.destroy-met ...

  8. Spring 源码学习:day1

    前言: 最近也不知道该忙些什么样的事情.便随便看看源码算了. 正文: (1) 在网上下载 Spring 的源码: 可以采用 git 方式下载 https://github.com/spring-pro ...

  9. spring 源码导入eclipse(sts)

    一. 准备工作 1.下载安装sts(springsource推荐使用) 下载地址: http://www.springsource.org/downloads/sts-ggts 2.下载安装gradl ...

  10. spring-如何将spring源码成功导入Eclipse中

    一.从 github上下载Spring源码到本机 二.利用 Gradle 编译 Spring 源码 环境: - Spring源码版本:spring-framework-4.3.x - Gradle版本 ...

随机推荐

  1. 饿了么Element UI之Upload组件图片上传【原创】

    图片文件换汤不换药,只要注意前端的写法即可 1.饿了么组件可以利用 http-request 的属性对上传进行自定义 :http-request="uploadFile" 2.设置 ...

  2. 蚂蚁图团队GraphRAG支持社区摘要——Token相比微软直降50%

    今年5月份,我们在DB-GPT v0.5.6版本发布了蚂蚁首个开源GraphRAG框架,支持了多种知识库索引底座,并在文章<Vector | Graph:蚂蚁首个开源GraphRAG框架设计解读 ...

  3. .NET 9 AOT的突破 - 支持老旧Win7与XP环境

    引言 随着技术的不断进步,微软的.NET 框架在每次迭代中都带来了令人惊喜的新特性.在.NET 9 版本中,一个特别引人注目的亮点是 AOT( Ahead-of-Time)支持,它允许开发人员将应用程 ...

  4. 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现四

    一.前言介绍: 1.1 项目摘要 随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势.传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速.便捷需求.这些问题不 ...

  5. oracle查询是否锁表以及解锁语句

    --锁表语句 SELECT b.owner, b.object_name, a.session_id, a.locked_mode FROM v$locked_object a, dba_object ...

  6. 自动化构建镜像:Packer

    在介绍Packer之前,先来回顾一下未使用Packer时自定义虚拟机镜像的步骤.先在本地启动一个虚拟机,从安装系统开始,再进行自定义配置或应用安装,最后封装压缩成镜像,详细操作步骤可以参考我之前写的文 ...

  7. 切换自己为www-data用户

    突发奇想的想把切换为www-data用户去看看会怎么样.然后做了一个尝试 由于我安装了lamp环境,所以有www-data用户,用它可以来执行web php ,以及安全放心的跑cli(避免权限过高执行 ...

  8. (Python基础教程之二)在Sublime Editor中配置Python环境

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  9. HAR文件

    简介 HAR(HTTP Archive format),是一种或 JSON 格式的存档格式文件,通用扩展名为 .har.Web 浏览器可以使用该格式导出有关其加载的网页的详细性能数据. 使用场景 在开 ...

  10. golang之context

    context 用来解决 goroutine 之间退出通知.元数据传递的功能. context 使用起来非常方便.源码里对外提供了一个创建根节点 context 的函数: func Backgroun ...