Java 分布式项目开发中涉及到的框架版本对应关系
1.idea 的版本决定了 你能安装的 maven 的版本范围;
如:idea 2018 版本,maven 只支持安装 3.6.1 以下版本,超过这个版本就不支持了,即使你下载了最新版本的 maven 添加进 idea 中,在使用时其实也不生效,依然是错误连篇;
对于初学者,这些其实非常不友好,因为初学者更关心的是如何学到更多代码上的知识,一旦出现这种卡 bug 的情况需要花费超级多的时间以及精力去查资料,最后可能还不一定能解决,还是要使用古老的版本来替换(刚开始学,我花费了两个通宵依然没找到原因,只好跟着教程的版本走,很苦恼)。
经验:如果你使用的是 idea ,在安装 maven 时, 直接使用推荐的版本,也就是下拉列表中的 maven2 或者 maven3 版本,至于具体是版本号不用管,只更改 依赖的仓库地址 和 maven 的配置信息文件内容,不要纠结版本号,让 idea 决定安装的 maven 版本是最佳的选择。(如何更改仓库地址,maven 镜像加速,java 版本控制子类的内容信息可以查看下面的文章)
2. spring cloud 与 spring boot 版本对应范围;
官方提供了查询版本对应关系的网址:https://start.spring.io/actuator/info ,用户只需要打开后将其内容复制,在 idea 中的任意项目的任意一个位置(可以在 src - resources - 目录下面)创建一个 xxx.json 文件,将复制的内容 粘贴 到该文件中,使用 Ctrl + alt + L 快捷键,格式化 json 内容,然后找到 “spring-cloud” 项,其中包含的内容就是官方给出的最新的版本对应关系,依据此规则导入 spring-cloud,然后导入它能够接纳的 spring boot 的版本,或者根据 创建项目时使用的 spring boot 版本,选择相匹配的 spring cloud 的版本。
建议:如果你是使用在线 GitHub 或者 Gitee 仓库 Git 到本地的版本控制项目,在创建模块时使用的 spring boot 应用,那么在创建时,是可以选择要使用的 spring boot 版本的,不论是否选择版本,都需要去看一眼 spring boot 版本号是多少,当然也可以在创建好模块后,在模块的 pom.xml 配置文件中查看如下位置,看到 spring boot 版本号,然后查询下表中的版本对应关系,来选择安装的 spring cloud 依赖的版本(spring cloud 版本可以在 maven repository 仓库中查询),不要广追求最新版本,一定要匹配,否则,项目启动时错误连篇,而且还特别不好拍错。
pom.xml 中的 spring boot 版本号:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2022.03.05之前官网提供对应范围如下:
spring-cloud | spring boot |
---|---|
Hoxton.SR12 | Spring Boot >=2.2.0.RELEASE and <2.4.0.M1 |
2020.0.5 | Spring Boot >=2.4.0.M1 and <2.6.0-M1 |
2021.0.0-M1 | Spring Boot >=2.6.0-M1 and <2.6.0-M3 |
2021.0.0-M3 | Spring Boot >=2.6.0-M3 and <2.6.0-RC1 |
2021.0.0-RC1 | Spring Boot >=2.6.0-RC1 and <2.6.1 |
2021.0.1 | Spring Boot >=2.6.1 and <2.6.5-SNAPSHOT |
2021.0.2-SNAPSHOT | Spring Boot >=2.6.5-SNAPSHOT and ❤️.0.0-M1 |
2022.0.0-M1 | Spring Boot >=3.0.0-M1 and ❤️.1.0-M1 |
3.在导入依赖时,一定要注意,你导入的依赖的名称是否正确;
spring-cloud 提供的网关 gateway 依赖全名是:spring-cloud-starter-gateway ,如果你在导依赖时使用的是手动输入依赖名的方式,很容易出现错误,尤其是对这些不太熟悉,输入 spring-cloud-gateway 然后刚好有一个,就直接按了回车,原本已经使用 spring-cloud 进行了 依赖关系管理 ,只要是 spring-cloud 下的依赖都是不需要输入版本号的,但是不输入版本号一直提示找不到依赖(unknown),然后就开始上网查询版本号,好不容易找到了,version 一下,发现还是提示错误,这个就是依赖名称不匹配造成的。