| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 【原创】解决SpringBoot在部署过程中出现大量jar包冲突的问题 -> 正文阅读 |
|
[Java知识库]【原创】解决SpringBoot在部署过程中出现大量jar包冲突的问题 |
前言目前项目上有个数据迁移类型的项目需要将老ES的数据迁移到MySQL中,然后由于ES的版本为5.X导致用的引入ES框架的POM就非常老,结果导致项目部署后出现了大量的jar包冲突,但是在IDEA本地却能够正常启动,这就让我感觉有点匪夷所思,这也是这篇博客灵感的来源,嘿嘿O(∩_∩)O 1、安装jar包检查冲突插件第一步最简单,在IDEA中装一个检查jar包冲突的插件:Maven Helper 首先这个工具就能列出所有存在冲突的jar包,比如我这个项目,简直可以用惨不忍睹来形容!注意选择的pom.xml最好是最后用来打包的子模块pom.xml,这样是最全的,然后去功能模块中去排除这些多余的jar包,例如: ? 这样就排除了古董ES包中的snakeyaml和jackson-core这两个会导致jar冲突的地方。 然后我发现这远远还不够!还有其他很多jar包冲突 当时的报错日志:? 2、更换项目打包方式我之前使用过打full包的方式打SpringBoot的jar包,但是这些jar包全被封死在了整个full包中很难修改,因此需要换打包方式,让其暴露在外,便于修改 SpringBoot全包的打包方式(full包)
注意:mainClass需要填写自己项目的SpringBoot启动类 然后改为Dependency+Assemble的方式进行打包
其中的build/package.xml需要自己建立,填写方式可以参考其他博客,我这边就不过多赘述了 Maven打包插件maven-assembly-plugin配置_恨水不成冰9520的博客-CSDN博客_maven-assembly-plugin maven-assembly-plugin配置打包 - 风雨无阻415 - 博客园 项目启动脚本需要改为java -cp的方式,cp即classpath,通过执行classpath来让项目启动加载哪些jar包 ?像我这边打包后是bin目录下放启动脚本,conf下放配置文件,lib下放所有dependency的jar包,那我的启动命令就是:
最后的{包名}.Application就是你项目的启动类的全路径。 3、想想凭什么IDEA中能够正常启动终于到了最关键的一步了,我就好奇了凭什么IDEA中能够启动成功,而部署后就没法启动了呢?何不看一下IDEA中的项目启动命令? IDEA项目的启动命令就是控制台打印的第一行: 别犹豫了,把这一行全部拷出来,贴到记事本中 哇!这么多看的眼花缭乱的,不是吗?没错!!这就是我们要找的答案了!!由于项目起不来肯定是jar包的版本冲突了,直接拿IDEA用的版本号不就行了?它能把项目起起来,你当然也能拿着IDEA提供的答案把项目起起来。结合Maven Helper提供的冲突jar包的线索,配合项目启动时报的错,很容易就能找的版本冲突的jar包。 拿我上面的报错图举个例子,它报的是spring-data-commons的包有问题,我看了一下项目打包部署的版本是2.1.8.RELEASE,而IDEA中用的是2.3.9.RELEASE,很明显部署时的包版本错了,我立马把这个spring-data-commons-2.1.8.RELEASE.jar删了,从IDEA显示的路径中把spring-data-commons-2.3.9.RELEASE.jar放上去,重新启动项目,发现报错信息直接变了,然后不停重复这个过程,直到整个项目都顺利起起来,至此这个大量jar包冲突的问题解决了。 后面如果代码需要更新,只需要更换项目改的那几个jar包即可,之前的jar包都不用动了。即使对外提供项目,也只需要将目前的项目整体打个包即可,完全不用再管那些jar包冲突的问题了。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:17:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |