- 父工程:父工程又称为父控制器,只是一个简单的工程,不能单独运行。作用是将子模块跟子工程聚合在一起。父控制器中的pom.xml配置,在子模块跟子工程中都可以被继承。
- 子工程:项目中创建的具有业务逻辑并且可以单独部署的的子模块称为子工程,一个项目中不同的子工程通过在pom.xml中添加同一个父工程而整合在一起。
- 子模块:提取出了一些子工程中通用的模块,做成jar包。当子工程需要使用的时候只要在pom.xml中添加依赖就好了。
创建父工程
- 打开eclipse,右键new->project,找到maven,选择maven Project点击next。
2、勾选创建一个简易工程Create a simple project
3、填写组名跟项目名,注意packaging一定要选择pom
4、父控制器创建好之后,删除自动生成的src文件夹
至此,父控制器就创建好了,让我们来看一下父控制器的pom.xml
只有一些简单的控制器的坐标信息以及打包方式。我们接着往下操作。
创建子模块
- 选中刚刚创建的maven项目右键->maven->New Maven Module Project
2、Module Name填写自己的子项目名,点击next
3、一般的jar工程选择maven-archetype-quickstart模板,web工程选择maven-archetype-webapp模板。选完之后next
4、Package里是系统默认生成的包,建议改成自己的包名,修改完点finish。
这样就创建好了一个子模块,如果要创建多个子模块重复上面的步骤即可。
这里我创建了3个jar工程1个web工程。如图
其中maven-web为web工程,可以发布到tomcat上进行部署启动。maven的父子工程也就创建完毕了。
此时我们可以再来看看父控制器的pom.xml发生了什么变化
我们发现父控制器的pom.xml中多出了modules标签。里面的各个module就是你所创建的子模块。就是这段modules标签,将各个子模块聚合到一起使之成为一个完整的大工程。
为什么要使用父子工程
相比于原先的创建项目方式,我认为有以下优点
- 父子工程对于模块的分离程度更高了
看一个例子:
按照以往的创建项目方式,一个maven项目就是一个大工程,一开始还能进行简单的测试编译,但是随着项目的不断变大和复杂化,后期再做改动则可能牵一发而动全身。但是使用父子工程,每个模块都是独立的,他们通过父控制器聚合在一起,这样当你要改动一个模块的时候你改动的也只是这一个模块而已,并不会影响其他的模块。
- 父子工程使代码更清晰,提高了重用
看一个例子:
父控制器的存在之一就是为了去除重复
一个项目存在多个模块,可能同时由多个人开发,比如abc3个模块,3个模块都是基于spring的那么3个开发都需要引入spring的核心jar包,这样就引入了3份,但是使用父子工程,则只需要在父工程中引入了,则子工程自动继承。
参考: https://blog.csdn.net/nvisalsd/article/details/80803277
http://blog.sina.com.cn/s/blog_15fb5fc170102y35w.html