一.为什么要划分模块?
我们初学阶段做的项目可能都是整个项目构建一个war包,采用三层架构,每一层都放到各自的package下,web,service,mapper,utils等。但是,随着我们maven项目越来越大,就会产生一些问题:
(1)build时间越来越长,有时可能你只是改动了web层中的代码,却要build整个项目
(2)pom.xml是用来继承,重用的。如果另外一个项目需要用到这个项目中的某个模块,如果这个项目没有划分模块,也就是只有一个war,那么只能依赖于这个war包,也就讲这整个项目都依赖过来了
二.为什么要聚合?
聚合就是把多个项目聚合到一起(可以建立一个专门负责聚合工作的project)
分久必合是大势,前面我们为了避免修改一小段代码而install整个项目采用分模块,但是如果我们所有模块的代码都改动了呢?难道要一个一个的install吗。
所以我们通常的做法是创建manager项目,再在其中聚合其它模块
<modules>
<module>mufc-pojo</module>
<module>mufc-service</module>
<module>mufc-mapper</module>
<module>mufc-web</module>
</modules>
这样,我们只需要install manager就可将其聚合的模块一起构建
三.为什么要继承?
分模块开发虽然起到了解耦的作用,但似乎给每个模块的权利太大,因为每个模块都有一个pom.xml,这就意味着每个模块都可以添加自己的依赖,这就可能造成相同的依赖每个模块都要添加一次,并且添加的版本可能不一致,这样势必造成项目的混乱,运行出问题,所以要有一个爸爸管理所有的jar包,其它人只能用爸爸的jar
<parent>
<artifactId>mufc-parent</artifactId>
<groupId>red.mufc</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
所以一个优秀完整的maven项目,多模块,聚合,继承是不可缺少的
四.搭建多模块maven项目
1.首先划分一下模块
kaka-parent --管理所有的jar包(pom)
|——kaka-common 通用组件(工具类)(war)
|——kaka-manager 后台系统(pom)
|——kaka-web (war)
|——kaka-service (jar)
|——kaka-mapper (jar)
|——kaka-pojo (jar)
2.项目的搭建流程参考这里
3.说一下用到的骨架
(1)maven-archetype-webapp
有WEB-INF目录,并且有web.xml和一个index.jsp
(2)maven-archetype-quickstart
pom.xml外,没有其他的xml了,但是有main、test两个包,包里放了一个App、AppTest类
搭建parent时不需要用骨架,因为它只需要pom.xml来管理依赖
搭建service,mapper,pojo时yongquickstart骨架就行
web需要jsp页面,web.xml 用webapp骨架