通过一个小案例来了解 分模块构建工程

将ssh工程拆分为多个模块开发:dao 、service 、web
17Maven - 分模块构建工程_# Maven技术

什么是继承与聚合?

继承

继承是为了消除重复,如果将dao、service、web分开创建独立的工程,则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定spring的版本等,可以将这些重复的配置提取出来在父工程的pom.xml中定义。

聚合

项目开发通常是分组模块开发,每个模块开发完成要运行整个工程,需要将每个模块聚合在一起运行,比如:dao、service、web三个工程最终会打一个独立的war运行。

案例实现

1)maven-parent 父模块
创建父工程

17Maven - 分模块构建工程_# Maven技术_02
定义坐标:
17Maven - 分模块构建工程_# Maven技术_03

定义pom.xml

17Maven - 分模块构建工程_# Maven技术_04

将父工程发布至仓库:

父工程创建完成执行maven-install 将父工程发布到仓库,方便子工程继承。
17Maven - 分模块构建工程_# Maven技术_05

2)maven-dao 子模块
创建dao子模块

17Maven - 分模块构建工程_# Maven技术_06

定义pom.xml

17Maven - 分模块构建工程_# Maven技术_07
也可以看到把所有的依赖也继承了,如下图:
17Maven - 分模块构建工程_# Maven技术_08

2)maven-service 子模块
创建service子模块

方法同maven-dao模板创建方法,模块名称为maven-service.

定义pom.xml

service模块的pom.xml文件需要继承父模块,service依赖dao模块:
17Maven - 分模块构建工程_# Maven技术_09

3)maven-web 子模块
创建web子模块

方法同maven-dao模块创建方法
注意:打包方式(packaging)应该选择war

定义pom.xml

web模块的pom.xml文件中需要继承父模块,web依赖service模块:
17Maven - 分模块构建工程_# Maven技术_10

4)聚合模块(关键)

修改父工程pom.xml,添加:
17Maven - 分模块构建工程_# Maven技术_11
注意:上边的module中配置的路径,此路径是相对于父工程的pom.xml文件找到子工程的pom.xml文件路径。