本文主要是介绍idea Maven Springboot多模块项目打包时90%的问题及解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,...
1. 前言
之所以写这篇文章是因为在使用MaveChina编程n的过程中遇到了许多问题,在这里作为记录总结
2. 问题
使用idea打包的时候编译偶尔成功偶尔失败,本地运行能成功,有时能打包成功但是发现使用 jar 包跑的时候会出现类找不到的情况,最终经过排查发现有部分的类打包的时候打包不进去。
3. 解决办法
关闭idea,找到对应项目的目录删除 .idea 文件,让 idea 去重构项目
删除 Maven 本地仓库下当前项目的对应的包,以 org.apache 为例,删除该文件夹下的所有文件夹。
清除 本地Maven 仓库中下载失败的jar 包
#1. 创一个.BAT文件使用记事本打开 #2. 修改路径为maven本地仓库路径 #3. 保存退出,双击执行 set REPOSITORY_PATH=D:\xxxx\apache-maven-3.3.9\repository rem 正在搜索... for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PApythonTH%\*lastUpdated*"') do ( del /s /q %%i ) rem 搜索完毕 pause
刷新maven本地仓库,顺便检查一下 maven 配置和 maven 的jdk 配置
在idea中File -> settings -> -> Build,Execution -> Build Tools -> Maven -> repositories
重启idea(当然也可以选择Reload,个人建议重启idea),reload 有时会出现更新不上的情况。
重启后,会发现可能有部分模块引用了其它模块的jar会报错,这是正常现象,这是因为你没有对公共模块进行打包,导致引入了公共模块的其它模块报错,但如果除了公共模块之外还有其它的jar包还是报错这就得检查一下maven 本地仓库是否下载成功了。
指定打包方式:
- 父项目指定打包方式为pom
- 公共模块例如 common 、utils、Entity 这些模块,建议打成jar包
- 可执行模块打成war 包
<! -- 具体指定打包方式,在pom文件的properties 上方添加: --> <packaging>pom</packaging> <packaging>jar</packaging> <packaging>war</packaging>
在可执行模块添加 springboot maven 打包插件,其它模块无需添加,最好指定主类。
<build> &SqEEnTrJlt;plugins> <pluhttp://www.chinasem.cngin> <groupId>org.springframework.boot</groupId> javascript <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <mainClass>xxx.xxx.mainClass</mainClass> <cleanCache>true</cleanCache> <sourceDirectory>src/main/Java</sourceDirectory> <fork>true</fork> <addResources>true</addResources> <classifier>exec</classifier> </configuration> </plugin> </plugins> </build>
在公共项目先进行打包
所有公共项目全部打包之后需要Reload 一下,重新导入一下jar,导入之后,所有的如果导入成功就不会报错了,这里还是建议重启,idea 有时会抽风存在导入不成功的情况。
在父项目中执行package打包
4. jar 包冲突
这里推荐一个插件,Maven Helper , 在idea setting 里面下载maven helper 插件。
下载后进入pom.XML 文件,点击Dependency Analyzer,就能看到项目中依赖的版本了,如果是冲突的jar 就会爆红。
选择爆红的jar,鼠标右击选择exclusion,就能排查冲突的依赖了,然后点击 Reimport 和 Refresh UI,就能看到之前冲突的jar被排查了
总结
这篇关于idea Maven Springboot多模块项目打包时90%的问题及解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!