Maven -- <dependencyManagement>管理子项目版本

背景:

一个旧项目,想使用mybatis-plus,想着这是比较基础的依赖包,就在父项目中添加对应依赖,如下:

XML 复制代码
    <!-- 依赖声明 -->
    <dependencyManagement>
        <dependencies>
            <!-- mybatis-plus 依赖配置 -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus</artifactId>
                <version>3.4.1</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.1</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.baomidou</groupId>
                        <artifactId>mybatis-plus-generator</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    </dependencyManagement>

然后我就发现,子项目还是没有对应的jar包,maven 重新加载也没用,后面我看了下项目包含的jar包,发现也没有上面我父项目依赖的包。

原因:

原来父项目中 <dependencyManagement> 标签下依赖的jar包,是不会加人到项目中取的,这个标签的作用是定义公共依赖的版本号,比如我定义了mybatis-plus 的版本为3.4.1,那如果子项目中需要使用mybatis-plus ,导入依赖时就不需要输入版本号了,如下:

XML 复制代码
    <dependencies>
        <!-- mybatis-plus 依赖配置 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-generator</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

对应的依赖包就会导入到项目,版本号会默认使用父项目pom.xml文件中的版本号3.4.1

这样的好处是,如果一个项目子项目众多,很多基本的依赖都需要,redis,数据库,中间件,http,nacos之类的,如果每个子项目都自己定义版本号,首先不好维护,其次不同版本直接的通讯也容易出问题,所以这类基础包都可以放到父项目,统一版本控制,这样就算是要修改其中哪个依赖的版本,也很容易

相关推荐
abcnull1 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡1 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
juniperhan1 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
ID_180079054732 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
c++之路2 小时前
C++23概述
java·c++·c++23
专注API从业者3 小时前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
摇滚侠3 小时前
DBeaver 导入数据库 导入 SQL 文件 MySQL 备份恢复
java·数据库·mysql
keep one's resolveY3 小时前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
天空属于哈夫克34 小时前
企业微信API常见的错误和解决方案
java·数据库·企业微信