Maven 项目打包时添加本地 Jar 包
在 Maven 项目开发中,我们经常会遇到需要引入本地 Jar 包的场景,比如使用未发布到中央仓库的第三方库、公司内部自定义工具包,或者处理版本冲突的依赖项。本文将详细介绍如何通过 Maven 命令将本地 Jar 包安装到本地仓库,并在项目中正确引用。
一、适用场景说明
当遇到以下情况时,需要手动添加本地 Jar 包:
- 依赖的 Jar 包未发布到 Maven 中央仓库或公司私服仓库
- 需要使用自定义版本的本地开发 Jar 包
- 解决依赖冲突时需要指定特定版本的 Jar 包
- 处理本地测试环境的特殊依赖
二、核心操作命令
1. 命令格式解析
Maven 提供了install:install-file插件来安装本地 Jar 包,完整命令格式如下:
mvn install:install-file -Dfile=本地Jar包绝对路径 -DgroupId=自定义groupId -DartifactId=自定义artifactId -Dversion=自定义版本号 -Dpackaging=包类型(jar/war等)-Dclassifier=可选参数(指定分类器,如javadoc/sources)
2. 实战案例演示
案例 :安装自定义 MQ 生产者 Jar 包
mvn install:install-file \-Dfile=E:\test\lib\mq-producer.jar \-DgroupId=com.aliyun \-DartifactId=mq-producer \-Dversion=1.0.0 \-Dpackaging=jar
- 文件路径:指定本地 Jar 包的完整磁盘路径
- groupId/artifactId/version:按照 Maven 坐标规范自定义,需与后续 pom.xml 配置一致
- packaging:默认值为 jar,根据实际包类型填写
三、项目配置步骤
1. 执行安装命令
首先切换到目标模块所在目录(非必须,也可在任意目录执行),打开命令行工具输入上述格式的安装命令。推荐使用绝对路径避免路径解析错误,例如:
cd E:\work\data-web
mvn install:install-file -Dfile=E:\test\lib\mq-producer.jar -DgroupId=com.aliyun -DartifactId=mq-producer -Dversion=1.0.0 -Dpackaging=jar
2. 验证本地仓库
安装成功后,会在本地 Maven 仓库生成对应目录结构:
~/.m2/repository/com/aliyun/mq-producer/1.0.0/
├── mq-producer-1.0.0.jar
├── mq-producer-1.0.0.pom
└── _remote.repositories
3. 添加依赖到 pom.xml
在项目的 pom.xml 中添加标准依赖配置:
<dependencies><dependency><groupId>com.aliyun</groupId><artifactId>mq-producer</artifactId><version>1.0.0</version></dependency>
</dependencies>
四、常见问题与解决方案
1. 路径错误问题
- 错误提示:Failed to read artifact descriptor for file: ...
- 解决方法:
- 使用dir(Windows)或ls(Linux)命令确认文件存在
- 替换路径中的反斜杠为双反斜杠(Windows 系统)
- 避免路径包含中文或特殊字符
2. 坐标冲突问题
当出现Conflict with artifact 'mq-producer:mq-producer:jar:1.0.0' in repository时:
- 检查是否重复安装相同坐标的 Jar 包
- 确保 pom.xml 中的依赖坐标与安装命令完全一致(包括大小写)
3. 打包(重点!)
当出现Conflict with artifact 'mq-producer:mq-producer:jar:1.0.0' in repository时:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope> <!-- 关键配置:包含系统依赖 --></configuration></plugin></plugins>
</build>
执行mvn package
生成可执行 Jar 包,包含所有本地安装的依赖
4. 环境变量配置
若出现mvn不是内部或外部命令:
- 确认 Maven 已正确安装并配置 PATH 环境变量
- 检查 JAVA_HOME 是否正确指向 JDK 安装目录(如 D:\tool\java)
- 建议通过 Maven 安装目录直接执行(如 D:\tool\apache-maven-3.8.6\bin\mvn.cmd)
相关文章:
Maven 项目打包时添加本地 Jar 包
在 Maven 项目开发中,我们经常会遇到需要引入本地 Jar 包的场景,比如使用未发布到中央仓库的第三方库、公司内部自定义工具包,或者处理版本冲突的依赖项。本文将详细介绍如何通过 Maven 命令将本地 Jar 包安装到本地仓库,并在项目…...

记录将网站从http升级https
http与https 你知道http是什么吗,那你知道https吗?在进行升级之前我们应该都听说http不安全,要用https,那你知道这是为什么吗? 什么是http? HTTP 是超文本传输协议,也就是HyperText Transfer…...
如何利用 ORM 框架有效防范 SQL 注入攻击
如何利用 ORM 框架有效防范 SQL 注入攻击 1. 引言 在现代 Web 开发中,SQL 注入攻击始终是数据库安全的一大隐患。攻击者利用不安全的 SQL 语句执行恶意操作,可能导致数据库泄露、篡改甚至被完全控制。幸运的是,ORM(对象关系映射)框架为开发者提供了一种更安全、更高效的…...
spark-shuffle 类型及其对比
1. Hash Shuffle 原理:将数据按照分区键进行哈希计算,将相同哈希值的数据发送到同一个Reducer中。特点:实现简单,适用于数据分布均匀的场景。但在数据分布不均匀时,容易导致某些Reducer处理的数据量过大,产…...

免费PDF工具-PDF24V9.16.0【win7专用版】
【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取码: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php...
游戏开发实战(二):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】
文章目录 奇美拉和队列奇美拉被动技能多对多观察者关系实现自定义元类奇美拉基类 管理奇美拉的队列奇美拉队列类心得体会扩展 规则定义工作相关奇美拉相关 奇美拉属性 在本篇博文,我将介绍本项目的整体框架,以及“编码规则”,这些规则保证了本…...
人工智能发展
探秘人工智能领域的热门编程语言与关键知识 在当今科技飞速发展的时代,人工智能已渗透到生活的各个角落,从智能语音助手到精准的推荐系统,从自动驾驶汽车到医疗影像诊断,人工智能正以前所未有的速度改变着世界。而在这背后&#x…...
在Rockchip平台上利用FFmpeg实现硬件解码与缩放并导出Python接口
在Rockchip平台上利用FFmpeg实现硬件解码与缩放并导出Python接口 一、为什么需要硬件加速?二、[RK3588 Opencv-ffmpeg-rkmpp-rkrga编译与测试](https://hi20240217.blog.csdn.net/article/details/148177158)三、核心代码解释3.1 初始化硬件上下文3.2 配置解码器3.3 构建滤镜链…...
Flink集成资源管理器
Flink集成资源管理器 Apache Flink 支持多种资源管理器,主要包括以下几种: YARN ResourceManager :适用于使用 Hadoop YARN 作为资源管理器的环境。YARN ResourceManager 负责管理集群中的资源,包括 CPU、内存等,并…...

一周学会Pandas2 Python数据处理与分析-Pandas2数据合并与对比-pd.concat():轴向拼接
锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 在数据分析中,数据往往分散在多个来源(如不同文件、数据库表或API),需…...

安卓原生兼容服务器
安卓原生兼容服务器的定义 安卓原生兼容服务器指基于Android系统内核和服务框架构建的服务器环境,能够在不依赖第三方适配层的情况下,直接运行符合Android API规范的服务程序,并满足与其他软硬件组件的协同工作需求。其核心特征体现在以下…...

优化用户体验:拦截浏览器前进后退、刷新、关闭、路由跳转等用户行为并弹窗提示
🧑💻 写在开头 点赞 收藏 学会🤣🤣🤣 需求 首先列举一下需要拦截的行为,接下来我们逐个实现。 浏览器前进后退标签页刷新和关闭路由跳转 1、拦截浏览器前进后退 这里的实现是核心,涉及到大…...
横川机器人驱动器导入参数教程
连接端口:有分220v和380v(刷新多次无效果就重新打开软件)升级固件:区分低压版和高压版导入参数:下载参数,下载成功后必须软重启,重新连接确认电机无干涉后相序测试 (等待10s&#x…...

大学生创新创业项目管理系统设计——数据库实验九
本实验为自己设计完成,我当年数据库实验得了94分 目录 1.实验目的 2.实验内容和要求 3.实验步骤 4.实验心得 实验九 数据库设计 1.实验目的 掌握数据库设计的过程和方法。 2.实验内容和要求 (35)大学生创新创业项目管理系统设计 一…...

电磁场与电场、磁场的关系
电磁场与电场、磁场之间存在着深刻的内在联系和统一性关系。这三者共同构成了电磁相互作用的基本框架,是理解电磁现象的关键所在。 电场和磁场实际上是电磁场的两个不同表现形式,它们既相互区别又密切联系。电场主要由静止电荷产生,表现为对…...

Python爬虫实战:研究Newspaper框架相关技术
1. 引言 1.1 研究背景与意义 互联网的快速发展使得新闻信息呈现爆炸式增长,如何高效地获取和分析这些新闻数据成为研究热点。新闻爬虫作为一种自动获取网页内容的技术工具,能够帮助用户从海量的互联网信息中提取有价值的新闻内容。本文基于 Python 的 …...

Kotlin MultiPlatform 跨平台版本的记账 App
前言 一刻记账 KMP (Kotlin MultiPlatform) 跨平台版本今天终于把 Android 和 iOS 进度拉齐了. 之前只有纯 Android 的版本. 最近大半年有空就在迁移代码到 KMP 上 中间学了 iOS 基础知识. xcode 的使用. 跨平台的架构的搭建… 感觉经历了很多很多. 一把辛酸泪 迁移的心路历…...

PIO 中的赋值魔术,MOV 指令
前言 在普通编程语言中,mov 可以理解为“赋值指令”,将一个值从一个地方拷贝到另一个地方。在 RP2040 的 PIO 汇编语言中,mov 同样是数据传递的关键指令,但它操作的是 PIO 独有的几个寄存器。 在 PIO 中,你可以用 mov …...
[docker]更新容器中镜像版本
从peccore-dev仓库拉取镜像 docker pull 10.12.135.238:8060/peccore-dev/configserver:v1.13.45如果报错,请参考docker拉取镜像失败,添加仓库地址 修改/etc/CET/Common/peccore-docker-compose.yml文件中容器的版本,为刚刚拉取的版本 # 配置中心confi…...

第十七次CCF-CSP算法(含C++源码)
第十七次CCF-CSP认证 小明种苹果AC代码 小明种苹果(续)AC代码 后面好难哈哈 小手冰凉 小明种苹果 输入输出: 题目链接 AC代码 #include<iostream> using namespace std; int n,m; int res,res3; int sum; int res21; int main(){cin …...

打造一个支持MySQL查询的MCP同步插件:Java实现
打造一个支持MySQL查询的MCP同步插件:Java实现 用Java实现一个MCP本地插件,直接通过JDBC操作本地MySQL,并通过STDIO与上层MCP客户端(例如Cursor)通信。插件注册一个名为mysql 的同步工具,接收连接参数及SQL…...

黑马k8s(十五)
1.Ingress介绍 2.Ingress使用 环境准备 Http代理 Https代理...
Axure项目实战:智慧运输平台后台管理端-订单管理1(多级交互)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:订单管理 主要内容:条件组合、中继器筛选、表单跟随菜单拖动、审批数据互通等 应用场景…...

解决 cursor 中不能进入 conda 虚拟环境
【问题】 遇到一个小问题,我创建的conda 环境在 cmd、powershell中都可以激活,但在pycharm、cursor中却不能激活? 看图 cmd中正常: cursor中不正常: 【解决方法】 cursor 中,打开终端,输入&a…...
微信小程序请求扣子(coze)api的例子
1. 准备工作 在开始之前,确保已经完成了以下准备工作: 创建并发布了 Coze 智能体。获取了个人访问令牌(Personal Access Token),这是用于授权的关键凭证。确认目标智能体的 Bot ID 和其他必要参数已准备就绪。 2. 请…...

C++ 实现二叉树的后序遍历与中序遍历构建及层次遍历输出
C 实现二叉树的后序遍历与中序遍历构建及层次遍历输出 目录 C 实现二叉树的后序遍历与中序遍历构建及层次遍历输出一、实验背景与目标二、实验环境三、实验内容四、数据结构与算法数据结构算法描述1. **构建二叉树函数 buildTree**2. **层次遍历函数 LevelOrder** 关键代码与解…...
基于大模型的髋关节骨关节炎预测与治疗方案研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与技术路线 二、髋关节骨关节炎概述 2.1 疾病定义与分类 2.2 发病机制与病理过程 2.3 流行病学特征 三、大模型技术原理与应用基础 3.1 大模型的基本概念与架构 3.2 大模型在医疗领域的应用进展…...
qiankun解决的问题
qiankun 中的沙箱机制是如何实现的?解决了什么问题? 一、实现方式 qiankun 的沙箱机制主要用于隔离微应用之间的运行环境,避免相互影响。其核心实现基于两种策略: 快照沙箱(SnapshotSandbox) 适用于不支…...
JavaScript从入门到精通(一)
引言 JavaScript 是一种跨平台、面向对象的脚本语言,最初是为了给网页添加交互性而创建的。如今,JavaScript 不仅是浏览器端开发的核心技术,也广泛应用于服务器端(如 Node.js)、移动应用开发等多个领域。本教程旨在提…...
快速失败(fail-fast)和安全失败(fail-safe)的区别
在 Java 中,快速失败(Fail-Fast)和安全失败(Fail-Safe)是集合类(Collection)在迭代过程中处理并发修改的两种不同策略,二者的核心区别在于 对并发修改的感知机制与容错性…...