Maven笔记
MAVEN#
项目构建工具
为什么使用#
- 简化项目构建,不用再手动寻找jar包,配置jar包
- 解决项目中的依赖冲突问题
依赖冲突?#
产生原因
- 项目中的依赖A和依赖B同时引入了依赖C
- 依赖C在A和B中的版本不一致就可能产生依赖冲突
- maven如果选择高版本C(1.1)来导入(这个选择 maven会根据不等路径短路径原则和同等路径第一声明原则选取),C(1.)中的类c在C(1.1)中被修改而不存在了。
- 在编译期可能并不会报错,因为编译的目的只是把业务源代码编译成class文件,所以如果项目源代码中没有引入共有依赖C因升级而缺失的类c,就不会岀现编译失败。除非源代码就引入了共有依赖C,因升级而缺失的类C则会直接编译失败。
- 在运行期,很有可能出现依赖A在执行过程中调用C(1.8)以前有但是升级到c(1.1)就缺失的类C,导致运行期失败,出现很典型的依赖冲突时的
NoClassDefFoundError
错误。 - 如果是升级后出现原有的方法被修改而不存在的情况时,就会抛岀
NoSuchMethdError
错误。
解决方式#
- 找到可能冲突的依赖(maven helper)
- 调整依赖致使版本统一
- 使用exclusion标签排除依赖
安装配置#
- settings配置本地仓库和远程仓库
- 配置环境变量
- idea中配置maven
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~