我们看很多开源项目时,发现部分子模块引用时不需要引入版本号,包括springboot下各个模块的引用。
其实maven在父工程中有一个标签 <dependencyManagement/>,此标签作用就是管理jar包依赖,此时不引用jar包到项目,也就是说,项目在此标签中添加很多依赖,子项目不使用,项目就不会从maven仓库下载jar包。
spring-cloud项目经常出现模块间的依赖,如果在各个模块间引用都添加版本号,此时整个项目很难管理,都需要写各自的版本号。
解决方法:
在父工程的pom文件中的<dependencyManagement>标签内添加各个子模块就可以了,这样以后版本管理只需要在父工程就统一管理。
比如
<properties>
<spring.cloud.version>2020.0.2</spring.cloud.version>
<spring.cloud.alibaba.version>2021.1</spring.cloud.alibaba.version>
<!--子模块版本号-->
<shop.module.version>1.0.0</shop.module.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
</dependency>
<!--子模块管理-->
<dependency>
<groupId>org.xm</groupId>
<artifactId>shop-common</artifactId>
<version>${shop.module.version}</version>
</dependency>
</dependencies>
</dependencyManagement>