记 从零搭建一个spring boot 多模块(models) 打包 含多个web工程打包细节与问题记录

项目基础结构(项目地址 :https://github.com/luocaca/models.git)


--

开局一张图。内容全靠编,bug全靠踩...



1.最原始spring boot 项目结构。如下

  现需要将commom   entity  mapper  service 抽出来,成立单独 的model

  抽出model 格式如下 (删除api内 commom   entity  mapper  service包 )

 新建   commom   entity  mapper  service 4大model


 api 依赖 4大model 


拆分后第一个问题


来来来。运行一下,看下会爆什么错。别他坑一波。肯定要看清楚(找不到类)

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'otherservice.PersonService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

-解决方法

在 model-service.src.main.java 下面新建 me.luocaca.model.service包,然后把PersonService拖过去


拖之前



拖之后

修改后,重新运行 ,ok


访问一下

数据库长这样,需要自己建一张


2.接下来介绍一下打包流程,以及将

打包结构要从最底层开始打包

也就是依赖关系过来一个一个model进行打包

本项目依赖关系梳理一下(models为最上层  打包方式为 pom )

由于本项目由2个可独立打包运行的web项目(api +web) 

+

 多个依赖(service mapper entity commom)项目组成


让我们简单粗暴的看一下依赖关系(一图堪比千言万语)


依赖关系图

看清楚没有 

依赖关系


api  —>  service  —>  mapper(dao)  —> entity  —>  commom( 最底层,不依赖上层 ) 

打包流程

commom —>entity  —> mapper(dao)  —> service  —> api  



先简单说明一下 什么是打包,再来说为什么要反着打包



install之后看看效果(找到maven仓库,看看文件结构)


可以看出,maven 打包的时候,会将第三方model 全部导入到jar包,而第三方的库都是网上下载到repository ,然后从仓库

中找到 .jar  .pom  .war  各种项目包,拷贝到 自己项目的  exec.jar 包里面,

→_→ 让我们看一下对比一下.jar 与  exec.jar的结构图 



.jar图


exec.jar图

看明白没。哈哈。exec.jar里面很多jar包。


看到自己写的model打包后的库没有

这里因为我已经打包过 commom  entity  mapper service 4个库,并且install 到maven 仓库,api才能被打包成功 


现在可以解释什么叫方向打包。从最底层,打包完整之后。再打包上层 model 

打包流程

commom —>entity  —> mapper(dao)  —> service  —> api  

假如 service 没有   package + install  直接  pai 进行 package +install ,会出现 找不到 model-service.0.0.1-SNAPSHOT.jar 

因为在我们新建一个model 的时候。maven里面是没有我们 service的包的。只有打包 并 install 之后,model-service.0.0.1-SNAPSHOT.jar 包


打包之前


打包之后

其他 mapper entity commom 同理。。。。。。。。。自己体会。先这样。。。。。不说了。下次说说jsp ,很多细节bug。要点出。

大神勿喷。

项目地址:https://github.com/luocaca/models.git


应为篇幅原因,这里主要讲api项目创建到打包发布过程,等下会在独立一批文章,记录web项目引入jsp与打包发布流程的采坑过程。


你可能感兴趣的:(记 从零搭建一个spring boot 多模块(models) 打包 含多个web工程打包细节与问题记录)