























比如在父项目中有这么一段配置:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在 Maven 的 <dependency> 元素中,type 属性的默认值是 jar。
常见的type值:
| type 值 | 说明 | 使用场景 |
|---|---|---|
| jar (默认) | Java ARchive 文件 | 大多数 Java 依赖 |
| pom | Project Object Model | 依赖管理(BOM) |
| war | Web Application ARchive | Web 应用包 |
| test-jar | 测试专用的 jar | 只用于测试的依赖 |
| maven-plugin | Maven 插件 | Maven 插件依赖 |
| ejb | Enterprise JavaBean | EJB 模块 |
| ear | Enterprise ARchive | 企业级应用包 |
实践建议:
大多数情况不需要指定 type:让 Maven 使用默认值 jar
只有特殊情况才指定:
BOM 依赖管理:type=pom
特殊的打包格式:type=war, type=ear 等
保持一致性:同一项目的依赖尽量统一类型
默认值:type="jar"
常见值:jar(大多数依赖), pom(BOM依赖管理)
原则:普通 Java 依赖不指定 type,依赖管理包必须指定 type=pom
scope=import 的含义scope=import 表示将这个依赖的 依赖管理信息 导入到当前项目的依赖管理中。
1. 你的项目声明 scope=import
2. Maven 下载 BOM 文件
3. 将 BOM 中的 <dependencyManagement> 内容合并到你的项目中
4. 你的依赖自动使用 BOM 中定义的版本
| scope 值 | 含义 | 使用场景 |
|---|---|---|
| import | 导入依赖管理信息 | 仅在 <dependencyManagement> 中用于 BOM |
| compile | 编译范围(默认) | 编译、测试、运行都需要 |
| provided | 已提供范围 | 容器或 JDK 已提供,如 servlet-api |
| runtime | 运行时范围 | 仅运行时需要,如 JDBC 驱动 |
| test | 测试范围 | 仅测试时需要,如 junit |
| system | 系统范围 | 从本地系统路径引入 |
scope=import 是专门用于导入 BOM 依赖管理信息的
不能省略:在 <dependencyManagement> 中对于 type=pom 的依赖必须使用
作用:让项目继承 BOM 中定义的所有依赖版本
位置:只能在 <dependencyManagement> 中使用
2.
--
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。