一文解决 idea Maven Springboot多模块项目打包时 90% 的问题

1. 前言

之所以写这篇文章是因为在使用Maven的过程中遇到了许多问题,在这里作为记录总结

2. 问题

使用idea打包的时候编译偶尔成功偶尔失败,本地运行能成功,有时能打包成功但是发现使用 jar 包跑的时候会出现类找不到的情况,最终经过排查发现有部分的类打包的时候打包不进去。

3. 解决办法

  1. 关闭idea,找到对应项目的目录删除 .idea 文件,让 idea 去重构项目
  2. 删除 Maven 本地仓库下当前项目的对应的包,以 org.apache 为例,删除该文件夹下的所有文件夹。
    在这里插入图片描述
  3. 清除 本地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_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
rem 搜索完毕
pause
  1. 刷新maven本地仓库,顺便检查一下 maven 配置和 maven 的jdk 配置
    在这里插入图片描述

在这里插入图片描述

在idea中File -> settings -> -> Build,Execution -> Build Tools -> Maven -> repositories

在这里插入图片描述
5. 重启idea(当然也可以选择Reload,个人建议重启idea),reload 有时会出现更新不上的情况。
在这里插入图片描述
6. 重启后,会发现可能有部分模块引用了其它模块的jar会报错,这是正常现象,这是因为你没有对公共模块进行打包,导致引入了公共模块的其它模块报错,但如果除了公共模块之外还有其它的jar包还是报错这就得检查一下maven 本地仓库是否下载成功了。
7. 指定打包方式

  1. 父项目指定打包方式为pom
  2. 公共模块例如 common 、utils、Entity 这些模块,建议打成jar包
  3. 可执行模块打成war 包
<! -- 具体指定打包方式,在pom文件的properties 上方添加: -->
<packaging>pom</packaging>
<packaging>jar</packaging>
<packaging>war</packaging>

在这里插入图片描述
8. 在可执行模块添加 springboot maven 打包插件,其它模块无需添加,最好指定主类。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <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>
  1. 在公共项目先进行打包
    在这里插入图片描述
  2. 所有公共项目全部打包之后需要Reload 一下,重新导入一下jar,导入之后,所有的如果导入成功就不会报错了,这里还是建议重启,idea 有时会抽风存在导入不成功的情况。
  3. 在父项目中执行package打包
    在这里插入图片描述

4. jar 包冲突

这里推荐一个插件,Maven Helper , 在idea setting 里面下载maven helper 插件。
在这里插入图片描述
下载后进入pom.xml 文件,点击Dependency Analyzer,就能看到项目中依赖的版本了,如果是冲突的jar 就会爆红。
在这里插入图片描述
选择爆红的jar,鼠标右击选择exclusion,就能排查冲突的依赖了,然后点击 Reimport 和 Refresh UI,就能看到之前冲突的jar被排查了
在这里插入图片描述

5. 最后的话

目前遇到的问题通过以上的这些办法基本上能解决,如果有遇到其它问题,欢迎留言探讨。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Spring Boot多模块项目打包,可以按照以下步骤进行操作。 首先,你需要将项目源码导入到本地进行打包验证。这些源码包括单工程构建打包和多模块打包的过程,可以放心使用。 在项目中,包含了一个父工程、多个子模块和一个工具模块。每个子模块都有启动类,而工具模块没有。因此,这三者的pom文件可能会有所不同。根据项目的需求,你需要修改这些pom文件。之后,你可以使用IDEA打包工具一键打包整个项目。 接下来,你需要修改每个子模块中有启动类的pom文件。在这段配置中,你需要加入以下内容: <build> <plugins> <plugin> <!--该插件主要用途:构建可执行的JAR--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </build> 以上配置的作用包括将java目录中的*.xml文件进行打包,并设置自己目录下的配置文件。 通过按照以上步骤进行操作,你就可以成功打包Spring Boot多模块项目了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot模块打包源码](https://download.csdn.net/download/zhangcongyi420/88153258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringBoot模块项目打包教程,超详细图文详解!](https://blog.csdn.net/weixin_43314519/article/details/115152850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值