Spring Boot\Cloud Maven项目版本管理问题
Spring Boot\Cloud Maven项目版本管理问题
前述:Spring Boot和Spring Cloud如果配置的时候不注意版本,就会出现各种各样奇奇怪怪的问题,手动管理项目依赖太麻烦。
使用Maven中的DependenciesManager节点来管理版本
一般常用的有下面三个:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.7.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.6.7</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
注意这里的 scope 和 type 节点不能少,不然不起作用。
DependenciesManager中的版本可以访问 https://start.spring.io/actuator/info 来查看。
下一步
使用了如上配置之后,当我们需要引入上面三个相关的依赖包的时候就可以不写版本号,配置的这三个依赖管理会自动帮我们找到适合的。
原理,为什么可以自动找到适合的?以spring-cloud-dependencies为例。
因为spring-cloud-dependencies下有全部与其相关的依赖包和对应的版本,当我们要引入某个包的时候,Maven做以下操作:
- 如果有版本号,则直接获取,如果未写版本号,则下一步
- 从dependencyManagement 的 dependencies 节点下寻找是否有与其对应的依赖包,如有,则填入这里的版本号,如没有,则版本号为 unkown.
我如何知道会引入哪个版本的依赖包?
在IDEA下,按住 Mac的Command按键,点击 artifactId 中的值,进入其对应的 POM 文件中,在这里可以找到对应版本。