千家信息网

如何进行maven模块划分实践

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,如何进行maven模块划分实践,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们平常做的java项目模块划分可能是这样:controll
千家信息网最后更新 2024年11月30日如何进行maven模块划分实践

如何进行maven模块划分实践,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

我们平常做的java项目模块划分可能是这样:


controller为控制器层;service为业务逻辑实现层;dao和数据库交互;util放些工具类;constant放常量类。

这样的模块划分很常见,但是有很多弊端:

1、当随着项目版本迭代,需求不断增加,代码结构越来越庞大,为后期的维护增大成本。比如说,我们改了一个controller类,就得整个项目全部编译。

2、比如说项目的util包里封装了很多通用工具类,当前项目可以用,其他项目也可以用,如果是上面的划分模式,就得依赖项目war,这变得非常的恶心,因为在maven中配置对war的依赖远不如依赖jar那样简单明了。

其实这种划分没有遵守一个设计模式原则:"高内聚,低耦合"。虽然我们通过包名划分了层次,这很好,但还不够,因为就构建层次来说,所有东西都被耦合在一起了。因此我们需要使用Maven划分模块(module)

如下图:

artmuseum-parent为所有module的父类,打包类型为pom,只有一个pom.xml文件用于管理module;

artmuseum-common被artmuseum-parent管理,该工程用于封装工具类、常量,打包类型为jar;

artmuseum-manage同样被artmuseum-parent管理,为该项目主要module,用于管理controller、service、dao、pojo这四个module,打包类型为pom;

module之间依赖关系如下:

artmuseum-manage-controller ->

artmuseum-manage-service ->

artmuseum-manage-dao ->

artmuseum-manage-pojo ->

artmuseum-common

这种划分就解决了上面的弊端:

1、方便重用,如果需要把common包中的工具类等用到其他项目组件,只需要

把common这个module执行mvn install后,依赖生成的jar即可;

2、利于扩展和维护,修改了controller层的代码,只需要mvn install这个module即可。

基于此,今天撸了一个聚合工程出来,用到了SSM框架并实现了一个发布项目的接口(简单的入库)。

工程结构如下:

接口测试如下:

入库成功如下:

看完上述内容,你们掌握如何进行maven模块划分实践的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0