Maven的POM文件相关标签作用

在Maven的POM文件中,<dependencies><dependencyManagement> 是两个相关但用途不同的标签,主要区别如下:

<dependencies>(直接依赖声明)

  • 立即生效 :在此标签中声明的依赖会被直接引入到当前项目中

  • 自动下载:Maven会立即下载这些依赖到本地仓库

  • 传递性依赖:这些依赖的传递性依赖也会被自动引入

xml

复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.8</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<dependencyManagement>(依赖管理)

  • 仅声明版本 :在此标签中声明的依赖不会立即被引入项目

  • 版本统一管理:主要用于在父POM中统一管理依赖版本

  • 子模块继承:子模块引用这些依赖时无需指定版本号

父POM中的用法:

xml

复制代码
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.8</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

子模块中的用法:

xml

复制代码
<dependencies>
    <!-- 无需指定版本,从父POM继承 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

主要区别总结

特性 <dependencies> <dependencyManagement>
作用 直接引入依赖 管理依赖版本
是否下载 立即下载 不下载,仅声明
使用场景 单个模块 多模块项目的父POM
版本管理 每个依赖需指定版本 统一管理版本,子模块继承
传递性 有传递性依赖 无传递性

最佳实践

  • 在多模块项目中使用<dependencyManagement>统一管理依赖版本

  • 在子模块的<dependencies>中只需声明需要的依赖,版本从父POM继承

  • 这样可以确保整个项目使用统一的依赖版本,避免版本冲突

相关推荐
广州华水科技2 分钟前
单北斗GNSS在水库变形监测中的应用与系统安装解析
前端
xingpanvip16 分钟前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
阿拉丁的梦26 分钟前
blender最好的多通道吸色工具(拾取纹理颜色排除灯光)
前端·html
吴声子夜歌27 分钟前
Vue3——脚手架Vite
前端·javascript·vue.js·vite
摘星编程29 分钟前
当AI开始学会“使用工具“——从ReAct到MCP,大模型如何获得真正的行动力
前端·人工智能·react.js
zzzyyy53832 分钟前
Linux之缓冲区
linux·运维·服务器
light blue bird36 分钟前
设备数据变化上传图表数据汇总组件
大数据·前端·信息可视化
hwscom37 分钟前
Linux服务器如何进行安全加固,防止黑客攻击(Windows也适用)
linux·服务器·安全
2501_9181269143 分钟前
开源祭祖网页index
前端·开源·html
liann1191 小时前
3.4_Linux 应急响应排查速查命令表
linux·运维·服务器·安全·网络安全·系统安全