# 核心版本升级 >[success] 组件与核心之间的版本依赖升级规范于核心的`1.6.x`开始遵循。因此以下规则建立在核心版本大于1.6.0的基础上。 首先,让我们来复习一下核心与组件的版本命名规则。 ## 版本命名规则 ### **核心** ***** **核心1.x中**,核心的版本明明规则很简单:`x.y.z`, 其中`x`、`y`、`z`均为整数。如果`x`为`0`,则可以在整个版本的最后出现一些例如`-BETA`的后缀。 例如:`1.6.0`、`1.6.2`、`1.7.0`、`0.0.1-BETA` #### **核心版本系** ***** 上述例子中,`1.6.0`、`1.6.2`属于`1.6.x`核心版本系,而`1.7.0`属于`1.7.x`核心版本系。 #### **核心版本递增** ***** **当:** - 修复若干BUG且不影响**同核心版本系**的兼容性 - 核心中增加了一些不影响**同核心版本系**的兼容性的扩展性功能(一般可以理解为不修改接口) - 不影响**同核心版本系**的兼容性的优化性更新 此时,每次更新`z`递增,其余不变,代表仍然处于**相同版本系** **当:** - 出现影响到**同核心版本系**的兼容性的更新(一般可以理解为对于基本执行逻辑的修改、接口的增加,删除,修改、增加一些需要组件做修改才能支持的功能等) - 对于使用者的原本代码来说需要修改的代码较少或不影响旧功能。(例如针对组件的启动流程优化,需要组件对一些新的接口进行实现,而使用者感受不到) 此时,每次更新`x`不变,`y`递增,`z`归零,代表变动至**不同版本系**。 **当:** - 出现了大面积的代码改动,不论是组件还是使用者都需要有大量修改代码的地方(例如大范围的修改包路径、更改类名、修改Maven坐标路径等) 此时,每次更新`x`递增,`y、z`归零,并做好公告与文档说明。 ### **组件** 组件的版本命名规则也不复杂,就是`a.b[.c]-x.y[.z]`,其中所有字母均为整数。`a.b.c`代表组件自己的版本号,`.c`可能不存在。`x.y[.z]`则代表其内部使用的核心的版本号,其中`.z`可以省略,代表使用某一个**核心版本系**。如果`a`为`0`,则可以在整个版本的最后出现一些例如`-BETA`的后缀。 例如:`1.1-1.6.0`、`22.33.44-1.6.3`、`0.6.2-BETA-1.7.0`、`2.2-1.7` 上述举例中,`1.1-1.6.0`、`22.33.44-1.6.3`同属`1.6.x`的**核心版本系**,`0.6.2-BETA-1.7.0`、`2.2-1.7`同属`1.7.x`的**核心版本系**。 #### **组件版本递增** 一般来讲,没有什么特殊说明的话,组件版本递增规则应当与核心的规则类似。 ## 组件的核心升级 上面介绍完了版本命名规则,接下来讲讲一个组件如何升级内置核心。 假设:当前有一个组件是这样的: ```xml <dependency> <groupId>io.github.ForteScarlet.simple-robot-core</groupId> <artifactId>component-forcoolqhttpapi</artifactId> <version>0.8.1-BETA-1.8.0</version> </dependency> ``` 可以看到,当前版本使用的是`1.8.x`的**核心版本系**,然后查看一下[核心的maven](https://mvnrepository.com/artifact/io.github.ForteScarlet/simple-robot-core)或者[核心的releases](https://github.com/ForteScarlet/simple-robot-core/releases),假设你发现核心在`1.8.x`**核心版本系**中的最新版为`1.8.1`,这时候你就可以将这个版本的新核心坐标加入到你的pom.xml中: ```xml <!-- 组件依赖,1.8.x的核心版本系 --> <dependency> <groupId>io.github.ForteScarlet.simple-robot-core</groupId> <artifactId>component-forcoolqhttpapi</artifactId> <version>0.8.1-BETA-1.8.0</version> <exclusions> <exclusion> <groupId>io.github.ForteScarlet</groupId> <artifactId>simple-robot-core</artifactId> </exclusion> </exclusions> </dependency> <!-- 同系核心的最新版 --> <dependency> <groupId>io.github.ForteScarlet</groupId> <artifactId>simple-robot-core</artifactId> <version>1.8.1</version> </dependency> ``` 这样就可以完成核心的更新了。 但是假如你的组件依赖写成了这个样子: ```xml <!-- 组件依赖,1.7.x的核心版本系 --> <dependency> <groupId>io.github.ForteScarlet.simple-robot-core</groupId> <artifactId>component-forcoolqhttpapi</artifactId> <version>0.7.0-BETA-1.7</version> <exclusions> <exclusion> <groupId>io.github.ForteScarlet</groupId> <artifactId>simple-robot-core</artifactId> </exclusion> </exclusions> </dependency> <!-- 1.8.x系核心的最新版 --> <dependency> <groupId>io.github.ForteScarlet</groupId> <artifactId>simple-robot-core</artifactId> <version>1.8.1</version> </dependency> ``` 那么有很大的几率会出现问题,因为它们分别处于不同的**核心版本系**。 ## **版本自动检测** >[success] 核心`1.8.1`版本后增加了当前核心版本系的版本检测机制。检测机制可以在配置`core.checkVersion`中关闭,默认开启(`true`) 版本检测机制所得到的结果均仅供参考,以maven中实际的版本为准。