关于maven中标签的说明
1.dependency下面的type和scope的意思是什么?
比如在父项目中有这么一段配置:
<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 的含义
作用:导入 BOM(Bill Of Materials)
scope=import 表示将这个依赖的 依赖管理信息 导入到当前项目的依赖管理中。
import 的工作流程
1. 你的项目声明 scope=import
2. Maven 下载 BOM 文件
3. 将 BOM 中的 <dependencyManagement> 内容合并到你的项目中
4. 你的依赖自动使用 BOM 中定义的版本
其他 scope 值对比
| scope 值 | 含义 | 使用场景 |
|---|---|---|
| import | 导入依赖管理信息 | 仅在 <dependencyManagement> 中用于 BOM |
| compile | 编译范围(默认) | 编译、测试、运行都需要 |
| provided | 已提供范围 | 容器或 JDK 已提供,如 servlet-api |
| runtime | 运行时范围 | 仅运行时需要,如 JDBC 驱动 |
| test | 测试范围 | 仅测试时需要,如 junit |
| system | 系统范围 | 从本地系统路径引入 |
总结
-
scope=import是专门用于导入 BOM 依赖管理信息的 -
不能省略:在
<dependencyManagement>中对于type=pom的依赖必须使用 -
作用:让项目继承 BOM 中定义的所有依赖版本
-
位置:只能在
<dependencyManagement>中使用
2.
--
浙公网安备 33010602011771号