在多module项目中,往往<dependencies>
与<dependencyManagement>
会同时存在,那么他们之间有什么区别呢?如下所示
<properties>
<java.version>1.8</java.version>
<springboot.version>2.4.5</springboot.version>
<lombok.version>1.18.20</lombok.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- web core -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${springboot.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
dependencies:
- 在父module的pom中,dependencies用于引入公共依赖,子module的pom无需显示引入依赖,默认直接继承自父依赖。
- 如果在父子module的pom中同时引入了相同的依赖,那么子依赖配置会覆盖父依赖配置,约定优于配置。
dependencyManagement:
- 在父module的pom中,dependencyManagement用于声明公共依赖,只声明,不引入,子module的pom需要显示引入,无需指定版本号,由父pom统一管理版本。
- 如果在父子module的pom中同时指定了依赖的版本号,那么子依赖配置会覆盖父依赖配置,约定优于配置。