maven项目模块化

为什么要进行项目模块化?

       因为项目可能会很庞大,功能会很复杂,在单体项目中包容整个业务很明显会很大,在进行项目分布式的时候,也没办法很好地一次性分离,所以需要在设计架构的时候就将各种业务模块化出来

模块化的程度

在写代码的时候,我们都喜欢将业务经常用到的代码分离出来,好让相似的业务也能直接用上;

并且在这些常用到的代码中,会分成基本组件,这些组件可能是其他库中直接拿过来的,所以要和项目兼容的时候常常需要进行简单地封装;

封装好组件之后,就可以进行业务的编写,所以在模块化的结构中一般会包含以下模块

  1. utils模块,第三方的库和包的调用代码
  2. common模块,将第三方的库进行简单地封装,可以让项目的业务层进行调用
  3. statis模块,静态资源,项目中会有logo图片和html页面,让项目可以直接使用
  4. dao模块,数据库层的模块,基于mybatis的技术,可以用到mapper对sql语句进行分离,让sql语句不要侵入到业务层,单独放在xml文件中,让业务层调用
  5. web模块,业务模块,包括repo,service,web层的结构。
    目前来说,web是最顶层的模块,可以将主要的启动程序放在该模块中,统一启动

 

如何用springBoot进行模块化

模块化最主要的是建立父模块的结构,和同级模块的依赖。

图示:

以root模块为父节点,节点下有五个模块,web模块依赖了dao和static和common模块

common模块依赖了utils模块

maven如何配置模块化

  1. 在模块管理中添加模块,例如选择springBoo的创建
  2. 创建后得到如下模块,frame模块相当于root模块,即父节点
  3. 模块创建好以后,就可以进行pom的配置


    首先进行父模块的配置
  4. 接下来配置各个子模块的pom文件


    这个是最底层的模块utils





    这个common不是最底层的模块,所以可以依赖其他的模块,common依赖utils





    web 模块是最上层的,并且启动程序也放在该模块中,用于启动项目,所以这个模块可以依赖后面


  5. 配置各个模块的<build>


    root模块中配置为maven的模式




    子模块中低层的模块同样也配置maven的模式




    子模块中的高层模块就配置为springBoot,
    并且配置程序入口,在依赖中需要将依赖模块的打包类型一起配置好


 

创建好依赖之后就可以调用代码了吗?

不一定!

假设在utils模块中有个工具类KO,放在com.example的包名下,在common模块中,就能直接调用得到。

但是如果有个工具类Out,直接放在java根目录中,并没有任何的包名包裹着,这时候common模块是没办法调用的。

所以模块里的代码都需要放在包下,否则其他模块无法调用。
 

如果有多个模块都有controller层的代码,如何得到除了web以外其他模块的控制器路由

以上配置完成之后,在web层的控制器就可以直接用,但是如果再配置多一个web层,它的路由一般来说是没办法使用的。

所以需要让springBoot去扫描其他module下的controller,只需要在@SpringApplication注解里添加一个属性就能完成

 

 

进行打包出现过的问题

在执行mvn clean package时候发生的错误

只需要跳过test阶段就行mvn clean package -Dmaven.test.skip=true

https://www.cnblogs.com/javabg/p/8026881.html

 

②没有在子模块中的主模块 web 中配置打包类型时,就会发生找不到模块的异常

如果依赖模块是war类型,就必须配置,否则将会报找不到模块的异常

 

 

参考https://blog.youkuaiyun.com/qq_37604508/article/details/83047198

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值