Maven笔记

MAVEN#

项目构建工具

为什么使用#

  • 简化项目构建,不用再手动寻找jar包,配置jar包
  • 解决项目中的依赖冲突问题

依赖冲突?#

产生原因

  1. 项目中的依赖A和依赖B同时引入了依赖C
  2. 依赖C在A和B中的版本不一致就可能产生依赖冲突
  3. maven如果选择高版本C(1.1)来导入(这个选择 maven会根据不等路径短路径原则和同等路径第一声明原则选取),C(1.)中的类c在C(1.1)中被修改而不存在了。
  4. 在编译期可能并不会报错,因为编译的目的只是把业务源代码编译成class文件,所以如果项目源代码中没有引入共有依赖C因升级而缺失的类c,就不会岀现编译失败。除非源代码就引入了共有依赖C,因升级而缺失的类C则会直接编译失败。
  5. 在运行期,很有可能出现依赖A在执行过程中调用C(1.8)以前有但是升级到c(1.1)就缺失的类C,导致运行期失败,出现很典型的依赖冲突时的NoClassDefFoundError错误。
  6. 如果是升级后出现原有的方法被修改而不存在的情况时,就会抛岀NoSuchMethdError错误。
解决方式#
  1. 找到可能冲突的依赖(maven helper)
  2. 调整依赖致使版本统一
  3. 使用exclusion标签排除依赖

安装配置#

  • settings配置本地仓库和远程仓库
  • 配置环境变量
  • idea中配置maven
posted @   yks43  阅读(36)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示
主题色彩