管理依赖版本-maven工程parent项目巧配置

news/2024/9/21 21:54:18 标签: maven, java, dependency, pom

  本文目标:开发人员,在了解pom文件properties、dependencyManagement标签用法的条件下,进行依赖包版本统一维护,达到统一维护项目依赖jar包版本的程度。

文章目录

    • 1 场景
    • 2 要点
    • 3 总结/练习

1 场景

  maven工程多模块项目,不同项目引用相同包,随着工程体量增大,容易在变更依赖包版本出现遗漏,出现不同模块引用的包版本不同问题。

版本不一致问题
  比如截图例子中,工程包含“mg-fre”、“mg-scr”两个模块,同时在各自的pom文件中,引入“slf4j-api”依赖包,出现版本不一致现象。

2 要点

  在parent项目中,使用“properties”、“dependencyManagement”标签,可以解决该问题。

  “properties”标签用于定义依赖包版本号,“dependencyManagement”标签用于声明引入依赖包时使用的版本。

  parent项目pom文件添加如下内容:

java"><properties>
    <org.slf4j.version>2.0.8</org.slf4j.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

  此时,在真正引入依赖包的位置,删除“version”标签。

  “mg-fre”模块pom文件引入位置修改为:

java"><dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
</dependencies>

  “mg-scr”模块pom文件引入位置修改为:

java"><dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
</dependencies>

  修改后,重新刷新maven依赖,可以看到,不同模块的“slf4j-api”版本已经统一。

版本统一
  后续再变更maven项目依赖包版本时,只需要在parent项目的pom文件中,统一修改“properties”定义的版本号即可,不同模块引入的依赖包版本会统一变更,不会出现版本不一致问题。

3 总结/练习

  本文介绍了在parent项目pom文件中,统一配置依赖包版本的方法。

  可以尝试在自己的项目中,使用“2 要点”章节的方法,进行依赖包版本统一维护,达到统一维护项目依赖jar包版本的效果。


http://www.niftyadmin.cn/n/5669514.html

相关文章

C++ 起始帧数、结束帧数、剪辑视频

C 指定起始帧数、结束帧数、 剪辑视频 C 无法直接用H264&#xff0c;只能用avi编码格式 #include <iostream> #include <opencv2/opencv.hpp>int main() {// 读取视频&#xff1a;创建了一个VideoCapture对象&#xff0c;参数为摄像头编号std::string path &quo…

论文阅读笔记:Sapiens: Foundation for Human Vision Models

Sapiens: Foundation for Human Vision Models 1 背景1.1 问题1.2 目标 2 方法3 创新点4 模块4.1 Humans-300M数据集4.2 预训练4.3 2D位姿估计4.4 身体部位分割4.5 深度估计4.6 表面法线估计 5 实验5.1 实现细节5.2 2D位姿估计5.3 身体部位分割5.4 深度估计5.5 表面法线估计5.6…

【RabbitMQ 项目】服务端:数据管理模块之绑定管理

文章目录 一.编写思路二.代码实践 一.编写思路 定义绑定信息类 交换机名称队列名称绑定关键字&#xff1a;交换机的路由交换算法中会用到 没有是否持久化的标志&#xff0c;因为绑定是否持久化取决于交换机和队列是否持久化&#xff0c;只有它们都持久化时绑定才需要持久化。绑…

详解 FFmpeg 中的 -map 选项

FFmpeg 是一个强大的多媒体处理工具&#xff0c;可以处理各种音视频转换、编辑任务。-map 选项是 FFmpeg 中非常重要且灵活的一个功能&#xff0c;它允许用户精确控制输入流如何映射到输出文件中。使用 -map&#xff0c;可以指定视频、音频或字幕等特定流进行处理&#xff0c;这…

go语言基础入门(一)

变量声明:批量声明变量:变量赋值: 声明变量同时为变量赋值可以在变量声明时为其赋值go中赋值时的编译器会自动根据等号右侧的数据类型自动推导变量的类型使用 : 进行赋值匿名变量 常量常量计数器iota1. 使用场景2. 基本用法3. 简化语法4. 自定义增量5. 复杂使用go的类似枚举 使…

opencv滤波算法总结

opencv平滑算法总结 1、高斯滤波 有大佬已经写的很好了&#xff0c;直接引用&#xff0c;备忘 链接: 高斯滤波 按照正态分布概率&#xff0c;将卷积核内灰度值加权求出最终的灰度值 2、中值滤波 最终取值为卷积核的中值 3、均值滤波 最终取值为卷积核的均值 4、双边滤波…

Hadoop的安装和使用

1. Hadoop简介 Hadoop是一个能够对大量数据进行分布式处理的软件框架&#xff0c;并且是以一种可靠、高效、可伸缩的方式进行处理的&#xff0c;它具有以下几个方面的特性。 高可靠性。高效性。高可扩展性。高容错性。成本低。运行在Linux平台上。支持多种编程语言。 2. 分布…

线性表一(vector)

#include<bits/stdc.h> using namespace std; vector<int> a(5,2);//定义一个初始长度为5&#xff0c;每个元素值为2的可变数组 vector<char> b(3);//定义一个初始长度为3&#xff0c;每个元素为默认值的可变数组 vector<int> v;//定义一个长度为0的可…