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

Maven(解决思路)

1.前言

       作为一名一线的开发人员,maven大概率是我们用的最多的依赖管理,但是你知道我们的maven出现问题后怎么去排查么?不对,确切的来说,假如你去导入的包没有被成功导入,你有什么方法去排查、去解决这个问题,接下来一文,带你了解maven的保姆级解决思路。

2.武林秘籍

       这篇我称为武林秘籍应该丝毫不过分吧,那么正片开始 !!!


一切的源头都是因为依赖包中的枚举类找不到导致的,最后的问题大家一定想不到,但是排查问题的思路确实我们需要去学习的

2.1 版本号

        每个依赖它都是有自己的版本号的,随着业务能力的更替,版本号也在快速更新,我们首先要确定我们在当前项目中用的依赖版本号是不是最新的,更为恰当的来说,应该是我们引用的依赖是不是提供了我们当前所需要的能力,所以首先排查版本号最最简单、最便利的

2.2 依赖冲突

我们的maven依赖它是具有传递性的,所以很可能会造成这么一种情况

我们引用A的依赖,同时A中又引用了B的低版本依赖,我们这边又在本项目中引用了B的高版本依赖,这个时候就会出现依赖版本冲突,可能会导致我们引用到了低版本的依赖,导致某些类或者是某些方法找不到的情况,所以这个时候我们要学会用maven自带的Dependdency来解决分析


像这种有报红的就说明有版本冲突,需要解决,把自己所需要的版本留下即可

2.3 快照包需要注意提交时间

        因为我们的maven有两种包,一种是正式包,另外一种是快照包,它们的唯一区别就是快照包可以随时更改代码,等上线的时候可以改为正式包,但是正式包就不可以随意更改代码了,如果想要更改代码,只能升级自己的版本进行迭代

        我们在用快照包的时候,可能会发现这么一种情况 ,就是=明明你另外一个项目的代码已经修改了,但是打包之后,在我们这个项目中却找不到你这次更新的内容,是在令人头疼。

本地仓库可视化工具:https://nexus.zhuanspirit.com/nexus/#nexus-search;quick~openreco.contract

        我们在本地仓库中可以快速的找到我们所依赖的版本,因为快照版本质检没有明显的区别,所以我们只能看我们引用的版本是什么时候提交的作为判断:

找到我们目标jar包

如果这个最近的更新时间不是你刚才打包的时间,那就说明你刚才打包失败了,重新打包上传

2.4清除idea缓存

        idea是通过索引来加速文件和依赖的查找的,如果索引出现问题,依赖自然而然就找不到了,所以我们清除idea缓存,使其重新加载索引及其他内容

2.5 远程仓库

        如果我们还是解决不了依赖问题,我们可以去检查一下我们的依赖包是否成功的被推到远程仓库中,在maven的settings中我们可以找到我们的远程仓库的地址

我们可以根据目录去找我们所需要的依赖的包是否存在,版本是否正确、更新时间是否是最新的

2.6 反编译

        如果还是有问题,那么还有一种可能就是他自身打包的时候出现了问题,我们可以根据反编译工具对其项目进行查看

我们常用的反编译工具有两种,一是gui,另外一种是luten

但是我还是比较推荐luten的,因为有些内容gui是没办法反编译出来的,导致

我们手动的将项目编译成jar包,然后利用工具再把jar包反编译出来,检查是否存在问题

打包过程:

2.7 重启电脑

都说重启能解决99%的问题

2.8 idea的正盗版问题

        我当时就是这个问题,解决个maveny依赖真是费劲了千辛万苦,最后才发现是idea本身的问题,下载了一个最新的社区版,完美解决这个问题


http://www.kler.cn/news/366065.html

相关文章:

  • 使用Python来下一场深夜雪
  • 模型选择拟合
  • 【Android】Convenient ADB Commands
  • 代理与 Hubstudio 集成
  • AIGC底层技术揭秘
  • 基于Multisim红外接近报警电路设计(含仿真和报告)
  • TCP标志位在网络故障排查中的作用
  • C语言与C++语言对比:为何C语言不支持函数重载而C++支持?
  • 【图论】Kruskal重构树
  • 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 模块化基础篇》
  • golang中的函数和结构体
  • Android H5页面性能分析与优化策略
  • 头歌——人工智能(机器学习 --- 决策树2)
  • SpringSecurity 简单使用,实现登录认证,通过过滤器实现自定义异常处理
  • 从汇编角度看C/C++函数指针与函数的调用差异
  • 甘特图代做服务
  • 银河麒麟相关
  • 若依 spring boot +vue3 前后端分离
  • Java语言的充电桩系统-云快充协议1.5-1.6
  • 互联网系统的微观与宏观架构
  • 重构案例:将纯HTML/JS项目迁移到Webpack
  • Nginx、Tomcat等项目部署问题及解决方案详解
  • 从零开始:构建一个高效的开源管理系统——使用 React 和 Ruoyi-Vue-Plus 的实战指南
  • C++核心编程和桌面应用开发 第十五天(deque/stack/queue)
  • ubuntu 20.04修改DNS
  • 高并发场景下解决并发数据不一致