Maven pom.xml文件怎么配置 pom.xml依赖详解

来源:编程学习作者:星宫一花头衔:网络博主
导读:本期聚焦于小伙伴创作的《Maven pom.xml文件怎么配置 pom.xml依赖详解》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Maven pom.xml文件怎么配置 pom.xml依赖详解》有用,将其分享出去将是对创作者最好的鼓励。

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

Maven pom.xml文件怎么配置 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>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>
    </dependencies>
</project>

依赖坐标的三个核心参数

  • groupId:组织标识,通常是公司或组织的反向域名,比如org.springframework、com.google.guava
  • artifactId:项目标识,是该组织下的具体项目或模块名称,比如spring-core、guava
  • version:版本号,指定要引入的库的版本,比如4.13.2、2.7.0

依赖的常用可选配置参数

除了三个核心坐标,依赖还可以配置其他参数来调整依赖的行为,最常用的参数包括scope、optional、exclusions。

依赖范围scope

scope参数用来指定依赖的作用范围,不同范围的依赖会在不同的构建阶段生效,也会被不同的类路径加载,常见的scope取值如下:

scope取值生效阶段是否参与打包典型场景
compile编译、测试、运行默认取值,大部分业务依赖都用这个
test测试单元测试框架如junit、mockito
provided编译、测试容器提供的依赖如servlet-api、jsp-api
runtime测试、运行数据库驱动如mysql-connector-java

配置scope的示例如下,这里指定junit只在测试阶段生效:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

可选依赖optional

optional参数用来标记该依赖是否为可选依赖,默认值为false。如果设置为true,那么这个依赖不会被传递到依赖当前项目的其他项目中。

比如当前项目引入了数据库驱动依赖,并且标记为optional,那么其他项目引入当前项目时,不会自动获得这个数据库驱动的依赖,需要自己手动添加。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
    <optional>true</optional>
</dependency>

依赖排除exclusions

有时候引入的依赖会自带一些我们不需要的传递依赖,这时候可以使用exclusions参数把这些传递依赖排除掉,避免依赖冲突。

比如引入spring-boot-starter-web时,会默认传递引入spring-boot-starter-logging,如果我们想用log4j2而不是默认的日志框架,就可以排除这个传递依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.7.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

依赖传递与冲突处理

Maven的依赖是有传递性的,比如项目A依赖B,B依赖C,那么项目A会自动获得C的依赖,不需要手动配置。但是如果同一个依赖出现了多个版本,就会产生依赖冲突,Maven默认使用最短路径优先先声明优先的原则来处理冲突。

如果冲突的版本路径长度不同,路径短的版本会被采用;如果路径长度相同,那么在pom.xml中先声明的版本会被采用。

如果需要手动指定某个依赖的版本,可以使用<dependencyManagement>标签来统一管理依赖版本,这个标签里的依赖不会直接引入,但是可以规定子模块或者依赖传递时的版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.20</version>
        </dependency>
    </dependencies>
</dependencyManagement>

常见配置注意事项

  • 不要随意使用latest或者release作为版本号,这些动态版本会导致构建结果不可控,建议使用固定版本号
  • 如果不确定某个依赖的坐标,可以到Maven中央仓库搜索对应的库,复制官方提供的配置片段
  • 定期使用mvn dependency:tree命令查看项目的依赖树,及时发现不必要的依赖和依赖冲突
  • 多模块项目中,建议把公共的依赖版本放在父项目的dependencyManagement中统一管理,避免版本不一致
正确配置pom.xml的依赖可以让项目的依赖管理更清晰,减少依赖冲突问题,提升项目的可维护性。

Mavenpom.xml依赖配置dependency坐标修改时间:2026-07-18 04:27:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。