maven快速入门第十讲——使用maven分模块构建工程
发布日期:2021-06-30 17:54:52
浏览次数:2
分类:技术文章
本文共 1469 字,大约阅读时间需要 4 分钟。
在上一讲中,我们对工程的拆分、聚合以及继承这三个思想有了一定的认识,有了思想才能指导实践操作,接下来,我会将一个工程拆分成多个模块来进行开发。
在平时的Java Web项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层)、dao(数据库访问层)、service(业务逻辑层)以及web(表现层),这样分层之后,各个层之间的职责会比较明确,后期维护起来也相对比较容易,今天我们就要使用maven来构建以上的各个层了。构建出来的工程结构如下图所示。
创建crm-parent父工程
在这里,我们可以使用eclipse来创建一个父工程,例如crm-parent。详细步骤如下:
- 第一步,点击File菜单选项,并在下拉列表中选中New,然后再在弹出的下拉列表中选中Other,如下图所示。 接着,在弹出的窗口的输入框中输入maven,并选择Maven Project,如下图所示。
- 第二步,点击Next,根据工程的实际情况选择工程的存放目录,当然了,也可以选择【Use default Workspace location】默认工作空间。
- 第三步,点击Next,出现如下窗口,在该窗口框中定义maven工程的坐标,如下图所示。 创建后的父工程如下图所示。 从它的目录结构可以看出,父工程本身不写任何代码,它里面有一个pom.xml文件,这个文件可以将多个子模块中通用的jar包所对应的坐标集中在父工程中配置,将来的子模块就可以不需要在pom.xml文件中配置通用jar包的坐标了。
构建crm-dao子模块
第一步,选中对应的父工程,然后右键,在下拉列表中选中New,接着再在弹出的下拉列表中选中Other,如下图所示。
紧接着,在弹出的窗口的输入框中输入maven,并选择Maven Project,如下图所示。 第二步,指定子模块名称,并勾选"跳过骨架选择"。 第三步,点击Next,指定crm-dao子工程的打包方式为jar。 第四步,点击Finish,可以看到父工程的结构如下图所示。 打开父工程的pom.xml文件,你会看到多了一个modules节点,该节点表示该父工程下所包含的子模块有哪些,可以有多个子模块。 再打开子模块的pom.xml文件,你会发现有一个parent节点,该节点内部所包含的子节点,其实就是父工程的坐标。构建crm-service子模块
步骤同上,不过我们要注意crm-service子工程的打包方式为jar。
构建crm-web子模块
步骤同上,不过我们要注意crm-web子工程的打包方式为war。此时,你会发现新创建的crm-web子工程报错了,如下图所示。
为什么会报错啊?因为它缺少了一个web.xml文件。为了解决这个问题,直接利用eclipse就可以很方便的创建出这个web.xml文件了,而且该文件中的内容也帮我们自己自动生成了,按照下图所示的步骤进行操作即可。 不知你有没发现,此时创建出来的各个子工程的编译版本都是1.5,如下图所示。 所以我们需要将编译版本设置为1.8。一种特别愚蠢的方法是在各个子工程的pom.xml文件中通过添加maven插件指定编译时候使用的JDK版本,很显然这种方法不可取。另外一种方法是将每个子工程的pom.xml文件中的重复内容(例如设置编译版本)提取出来在父工程的pom.xml文件中定义好,就像下图这样。 这样弄完之后,可能各个子工程还会报错,刷新一下各个子工程即可解决错误。最终创建出来的父工程的结构如下图所示。转载地址:https://liayun.blog.csdn.net/article/details/103692736 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月08日 02时29分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【NLP学习笔记】词性标注(Part-of-speech Tagging, POS)
2019-04-30
《知识图谱》阅读笔记(七)
2019-04-30
《知识图谱》阅读笔记(九)
2019-04-30
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
超越白皮书8:穿云而过的闪电网络
2019-04-30
AMM做市无常损失对冲分析系列(一)—— 损益及期权对冲模型构建
2019-04-30
JS中document对象和window对象有什么区别
2019-04-30
【python练习题】遍历1
2019-04-30
【matlab】显示图片且下方显示文字
2019-04-30
关于greater<int>以及类模板的一些理解
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
基于CentOS 7的Linux常用命令行命令
2019-04-30
行阶梯型矩阵
2019-04-30
信号量机制
2019-04-30
临界资源与临界区
2019-04-30
matlab中uint8,double,im2double和im2uint8的区别
2019-04-30
数字图像处理总复习
2019-04-30
图像去噪(包含修正的阿尔法均值滤波及通用滤波方法代码)
2019-04-30