当前位置: 首页 > ai >正文

Maven 手动添加 JAR 包到本地仓库笔记

Maven 手动添加 JAR 包到本地仓库笔记


背景

Maven 默认从中央仓库(repo1.maven.org)自动下载依赖,但在以下场景中可能遇到问题:

  1. 网络限制
    • 国内访问 Maven 中央仓库速度较慢(尤其未配置镜像时)。
    • 企业内网限制导致无法直接访问外网仓库。
  2. 特殊依赖需求
    • 中央仓库未收录的私有 JAR 包(如内部工具库)。
    • 需要特定版本依赖但自动下载失败(如版本被移除或冲突)。
  3. 开发调试场景
    • 本地编译的 JAR 未发布到仓库,需临时引入测试。

手动安装依赖是绕过自动下载的应急方案,但需注意依赖管理的规范性(优先推荐配置镜像仓库或 Nexus 私有库)。


核心原理

通过 mvn install:install-file 命令将本地 JAR 文件安装到 Maven 本地仓库(~/.m2/repository),使其能被项目识别为依赖。


操作步骤
  1. 准备必要信息

    • Group ID:项目所属组织标识(如 org.apache.commons
    • Artifact ID:项目名称(如 commons-lang3
    • Version:版本号(如 3.12.0
    • JAR 文件路径:下载的 JAR 文件绝对路径(如 C:\downloads\commons-lang3-3.12.0.jar
  2. 执行安装命令
    在终端(CMD/PowerShell)中运行:

    mvn install:install-file \-Dfile=C:\downloads\commons-lang3-3.12.0.jar \-DgroupId=org.apache.commons \-DartifactId=commons-lang3 \-Dversion=3.12.0 \-Dpackaging=jar \-DgeneratePom=true
    
    • 关键参数说明
      • -Dfile:JAR 文件路径
      • -DgroupId/-DartifactId/-Dversion:必须与项目中 pom.xml 的依赖声明一致
      • -Dpackaging:文件类型(默认为 jar
      • -DgeneratePom:自动生成 POM 文件(若无配套 POM)
  3. 验证安装结果
    检查本地仓库目录是否生成对应文件:

    ~/.m2/repository/org/apache/commons/commons-lang3/3.12.0/├─ commons-lang3-3.12.0.jar└─ commons-lang3-3.12.0.pom
    

高级场景
  1. 指定已有 POM 文件
    若已下载配套的 .pom 文件,替换 -DgeneratePom=true

    -DpomFile=C:\downloads\commons-lang3-3.12.0.pom
    
  2. 安装带分类器的 JAR
    如附加 sources.jarjavadoc.jar

    -Dclassifier=sources  # 示例:附加源码包
    

注意事项
  1. 路径格式(Windows)

    • 使用双引号包裹含空格的路径:
      -Dfile="C:\My Downloads\example.jar"
      
    • 反斜杠 \ 需转义或改用正斜杠 /
      -Dfile=C:/downloads/example.jar
      
  2. 依赖完整性

    • 手动安装可能缺少传递依赖(依赖的依赖),需自行补全。
  3. 优先使用 Maven 自动下载

    • 仅在网络问题无法自动下载时手动操作,避免版本冲突。
    • 推荐长期解决方案:
      • 配置阿里云镜像(settings.xml 中配置 <mirror>
      • 搭建 Nexus 私有仓库管理企业依赖

项目中使用依赖

pom.xml 中正常声明:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version>
</dependency>
http://www.xdnf.cn/news/1394.html

相关文章:

  • 树莓派超全系列教程文档--(41)树莓派config.txt旧版内存控制选项
  • 单片机与FPGA的核心差异、优缺点、编程差异、典型应用场景、选型等对比分析
  • 集结号海螺捕鱼活动系统开发全解(第五篇)
  • Ubuntu20.04下GraspNet复现流程中的问题
  • 26.OpenCV形态学操作
  • tomcat Server 连接服务器 进展
  • LangChain Runnable简介
  • P1613 跑路
  • Eliciting Causal Abilities in Large Language Models for Reasoning Tasks
  • 【Python 学习笔记】 pip指令使用
  • NLP高频面试题(五十二)——BERT 变体详解
  • 什么是数据库的DDL和DML,有什么区别?
  • 《多Agent架构VS千万字长文本VS深度推理引擎——拆解Coze、通义、Kimi的AI终局博弈密码》
  • Go语言学习笔记(一)
  • 数据库11(触发器)
  • 智启未来|艾博连科技加入奇瑞雄狮科技LION AI联合实验室
  • VUE3中使用echarts,配置都正确,不出现tooltip
  • 大厂面试-redis
  • 【KWDB 创作者计划】_深度学习篇---向量指令集
  • system verilog 语句 耗时规则
  • 拥抱基因体检,迎接精准健康管理新时代
  • 3.3 技术框架:LangChain、ReAct、Memory与Tool Integration
  • ROS 快速入门教程02
  • (19)VTK C++开发示例 --- 分隔文本读取器
  • Kafka 详解
  • 服务器上安装jdk
  • Android Cordova 开发 - Cordova 快速入门(Cordova 环境配置、Cordova 第一个应用程序)
  • SQL Server 2022 常见问题解答:从安装到优化的全场景指南
  • Linux部署Web程序
  • openharmony5.0.0中C++公共基础类测试-线程相关(一)