maven 多module环境下打包出现找不到包的问题及解决方案

时间:2024-04-10 18:30:56

maven 多module环境下打包出现找不到包的问题及解决方案

问题的出现

在一个结构清晰的项目中,一个没有module划分的结构显然不是最佳实践。有人会说可以在同一个Project中定义不同的包名及包路径来做区分,但这样当功能复杂后并不可取。

当然,如果你的项目足够简单,比如只是提供一个很简单的微服务,没有分层治理的概念,那么则不需要关心这个问题了。

下面就Spring Boot环境中多module打包的注意事项列举如下,希望对大家有所帮助。

问题演示

新建所需要的module模块,在此示例中新建两个module,bingo-core和bingo-web。其中bingo-core作为封装服务提供给bingo-web使用,bingo-web作为我们的工程的最终jar包提供服务。为了说明问题,我们仍然采用spring boot框架来构建这两个module。

具体新建步骤可参考《从0到1,只需两分钟》这篇文章,不同的是,在新建的时候选择新建module即可。新建完毕后,工程结构如下图所示。注意此时父pom文件的打包方式需要变更成pom,不再是jar或者war。

maven 多module环境下打包出现找不到包的问题及解决方案

问题的解决

那么问题就是这里了,这个问题和spring boot的打包方式有关系,spring boot默认将每个module打包成一个fat jar,这个jar包和我们正常使用的jar包内部的结构是不相同的,如下图所示,fat jar包含了直接运行所需要的所有信息(包含内嵌的容器,如果是一个web应用的话),那么类的加载路径此时就发生了变化,所以在编译时会提示找不到引用类。

所以在公共common的module配置上加上下面的(pom)

maven 多module环境下打包出现找不到包的问题及解决方案

转载于:

https://www.cnblogs.com/zyfd/p/9883473.html

https://blog.csdn.net/persistencegoing/article/details/86718448