Maven的pom.xml文件是项目对象模型的核心配置文件,所有项目依赖、构建规则、插件配置都在这个文件中定义,其中依赖配置是最常用的功能之一,直接决定了项目可以引入哪些第三方库或模块。

pom.xml依赖配置的基础结构
在pom.xml中,所有依赖都需要放在<dependencies>标签内部,每个单独的依赖使用<dependency>标签定义,基础结构如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo-project</artifactId>
<version>1.0.0</version>
<dependencies>
<!-- 单个依赖配置 -->
<dependency>
<groupId>组织ID</groupId>
<artifactId>依赖ID</artifactId>
<version>版本号</version>
</dependency>
</dependencies>
</project>
核心标签含义
- groupId:依赖所属的组织或公司标识,通常和包名规则一致,比如org.springframework
- artifactId:依赖的具体模块名称,比如spring-core
- version:依赖的版本号,用来指定引入的具体版本
添加常见依赖的示例
以引入Spring Boot的Web starter依赖为例,完整的配置如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.14</version>
</dependency>
如果是引入Junit测试依赖,配置如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
依赖作用域scope的配置
除了基础的三个标签,<scope>标签用来定义依赖的作用范围,常见取值如下:
| scope取值 | 作用说明 | 典型使用场景 |
|---|---|---|
| compile | 默认作用域,依赖在编译、测试、运行阶段都有效 | 项目核心业务依赖 |
| test | 仅在测试阶段有效,不会打包到最终产物中 | Junit、Mockito等测试框架 |
| provided | 编译和测试阶段有效,运行阶段由容器提供 | Servlet API、JSP API |
| runtime | 测试和运行阶段有效,编译阶段不需要 | JDBC驱动、日志实现 |
依赖版本的统一管理
当项目中有多个依赖使用同一个第三方库的不同模块时,为了避免版本不一致,可以在<properties>标签中定义版本变量,然后在依赖中引用:
<properties>
<spring.version>2.7.14</spring.version>
<junit.version>4.13.2</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
依赖冲突的解决方式
当不同依赖引入了同一个库的不同版本时,会产生依赖冲突,Maven默认采用最短路径优先原则,也可以通过<exclusions>标签排除不需要的依赖:
<dependency>
<groupId>com.example</groupId>
<artifactId>module-a</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
上述配置会排除module-a依赖中引入的slf4j-api,避免和项目其他依赖的版本冲突。
Mavenpom.xml依赖配置dependency修改时间:2026-07-02 06:06:29