第二章--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.0Semantic 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.a11.0.0.b991.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.02.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. C语言(从入门到入土)

    1.C语言整体上需要记住的 总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构 (三个循环结构), 选择结构 (if 和 switch) 2)读程序都要从main()入口, 然后从最上面 ...

  2. awk 处理 Git 提交信息生成 Release Note

    发布软件时通常都会写 Release Note,但每次从头手打也有点累,可以考虑从 Git 的提交历史中自动生成. Git 提交信息一般是三段式结构,段落之间使用空行隔开: <subject&g ...

  3. 题解: CF768D Jon and Orbs

    题解:CF768D Jon and Orbs 一句话题面:有k种不同的物品,每天等概率任取一种(不一定是新的种类).q组询问,每组给出一个p,问取完这k件物品的概率不小于\(\frac{p}{2000 ...

  4. SynthID Text 现已发布|在 AI 生成文本中应用不可见水印的新技术

    你是否难以分辨一段文本是由人类撰写的,还是 AI 生成的?识别 AI 生成内容对于提升信息可信度.解决归因错误以及抑制错误信息至关重要. 今天,Google DeepMind 和 Hugging Fa ...

  5. youtube视频下载,youtube-dl

    []为选填,用的时候去掉[] 用pip装youtube-dl pip install -U youtube-dl [--proxy=127.0.0.1:7890] youtube-dl下载youtub ...

  6. 鸿蒙NEXT开发案例:随机数生成

    [引言] 本项目是一个简单的随机数生成器应用,用户可以通过设置随机数的范围和个数,并选择是否允许生成重复的随机数,来生成所需的随机数列表.生成的结果可以通过点击"复制"按钮复制到剪 ...

  7. ArrayList removeRange方法分析

    <ArrayList原码分析>一文中提到了"为什么removeRange(int fromIndex,int toIndex)是protected的?" 先给出remo ...

  8. k8s之基础篇

    相关概念: kube-apierver: 控制平面组件,负责kubernetes api, 处理接受的请求工作 kube-controller-manager: 控制平面组件, 负责运行控制器进程 k ...

  9. 压缩工具之upx

    在golang项目中, 最终运行的是打包好的二进制文件,如何才能让这个文件尽可能的小呢? 1.编译阶段的参数处理 go build使用的是静态编译,会将程序的依赖一起打包,这样一来编译得到的可执行文件 ...

  10. 新型大语言模型的预训练与后训练范式,苹果的AFM基础语言模型

    前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的.公开权重的大型语言模型.最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内 ...