多模块maven(maven权威简记读后感)

前言

当我们需要复用某些项目某一组功能时,不能总是cv一些项目代码到新的模块中,所以多模块maven就是最好的解决方案

需求

我们需要制作一个天气管理系统的web和命令行应用,只需传入对应参数即可返回对应的天气数据,由于我们这里只是介绍maven多模块的使用,所以对于项目中运用到技术细节以及功能实现不做过多介绍

创建的maven项目

整体结构与父模块pom配置

通过上述需求,我们知晓我们现在需要做一个天气预报查看器,且支持web和命令行两种方式查看,所以web和命令行查看天气预报的方式肯定是一致的,所以查天气模块可以复用。
既然查天气模块可以复用,那么返回值我们肯定也需要规范,那么模型层也可以抽一个模块作为复用。
既然是天气预报管理,那么增删改查是必定的,必然有持久层模块,这块也可以复用,所以我们又可以单独抽一个dao层模块。
经过简单的需求分析,我们在idea中制作了如下的一个模块
在这里插入图片描述可以看出simple-parent作为各个模块的父亲,然后就是公用模块simple-model、api模块simple-weather、持久层模块simple-persist、web模块simple-webapp以及命令行模块simple-command

作为父pom,simple-parent必须引用所有模块,且规范这些模块对父模块的尊称,所以pom文件必须指明自己的介绍以及引入的模块,代码如下所示

 <modelVersion>4.0.0</modelVersion>
  <artifactId>simple-parent</artifactId>
  <packaging>pom</packaging>
  <name>Chapter 7 Simple Parent Project</name>
 
  <modules>
    <module>simple-command</module>
    <module>simple-model</module>
    <module>simple-weather</module>
    <module>simple-persist</module>
    <module>simple-webapp</module>
  </modules>

模型模块

模型模块作为数据库返回结果的实体映射,自然需要hibernate相关依赖,以及指明自己的父亲即可,代码如下所示
在这里插入图片描述

api模块

作为api,必须需要进行查询以及返回相应模型对象给需要的模块,所以api模块除了指明父亲、还需引入model模块作为结果映射,而这个结果有可能是从数据库查出,所以我们需要引入dao模块即simple-persist

在这里插入图片描述

dao模块

该模块就剩crud数据库操作模块,最多需要将结果以model的形式返回给调用层,所以只需自我介绍、指明父亲后,再引入model模块以及相关需要的持久化框架即可
在这里插入图片描述

webapp模块

该模块就是给用户用的模块,即根据用户相关操作查看或者修改天气结果。所以我们只需引入api模块即可。但是有很多读者认为api模块需要进行dao模块操作以及model模块类型的返回值,我们是否需要在webapp模块引入对应的依赖呢?
答案是不需要,这些对于webapp模块来说都是非直接依赖,只需引入simple-weather这个api模块,api模块就会他需要的dao模块(simple-persist和simple-model引入),所以app模块只需指明父亲、自我介绍、引入api模块和相关框架依赖即可
在这里插入图片描述

command模块

同webapp模块

小结

说白了,由于maven具备传递依赖性管理,涉及间接依赖的依赖都不要管,让直接依赖引入即可。

猜你喜欢

转载自blog.csdn.net/shark_chili3007/article/details/119299897