1.dependencies(直接依赖)
-
作用:直接引入依赖到当前模块
-
特点:
-
声明的依赖会实际被下载并加入classpath
-
会传递给依赖此模块的其他项目(依赖传递性)
-
必须显示指定版本号(除非从父级继承
- 使用场景:单模块项目或需要实际使用依赖的模块
-
示例:
-
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.18</version> <!-- 必须指定版本 -->
</dependency>
</dependencies> -
2.
dependencyManagement(依赖管理) -
作用:声明依赖版本和范围但不直接引入依赖
-
特点:
-
不实际下载依赖,仅提供版本管理
-
集中版本号和scope(如test/runtime)
-
子模块引用时多模块项目的父POM
-
使用场景:统一管理多模块版本项目的依赖版本
-
示例(父POM中):
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.18</version> <!-- 统一指定版本 -->
<scope>compile</scope> <!-- 统一指定作用域 -->
</dependency>
</dependencies>
</dependencyManagement> - 工作流程示例(多模块项目)
- 父模块 POM(管理版本)
- <project>
<!-- 父模块声明 -->
<dependencyManagement>
<dependencies>
<!-- 统一管理版本 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
</dependencies>
</dependencyManagement>
</project> - 子模块 POM(使用依赖)
-
<project>
<dependencies>
<!-- 子模块直接使用,无需指定版本 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- 版本从父级继承 -->
</dependency>
</dependencies>
</project> -
注意:单模块项目直接使用
dependencies声明依赖即可;父 POM 用
<dependencyManagement>声明版本;子模块用
<dependencies>引入实际依赖类似于代码中的声明接口和具体实现的关系。
-
670

被折叠的 条评论
为什么被折叠?



