Maven的继承和聚合

继承

为什么需要继承机制

由于非 compile 范围的依赖信息是不能在“依赖链”中传递的,所以有需要的工程只能单独配置。例如:

Maven的继承和聚合Maven的继承和聚合 

此时如果项目需要将各个模块的junit版本统一为4.9,那么到各个工程中手动修改无疑是非常不可取的。 使用继承机制就可以将这样的依赖信息统一提取到父工程模块中进行统一管理。 

创建父工程 

 创建父工程和创建一般的 Maven 工程操作一致,唯一需要注意的是:打包方式处要设置为 pom。

在子工程中引用父工程 

格式:

Maven的继承和聚合

此时如果子工程的 groupId 和 version 如果和父工程重复则可以删除。

在父工程中管理依赖 

将 Parent 项目中的 dependencies 标签,用 dependencyManagement 标签括起来。

其实,这里还说漏了一个功能,就是父工程的pom里面直接声明dependencies,就是不套在dependencyManagement标签内的话,子工程是直接继承这个依赖的,子工程直接不用声明就有这个依赖。

Maven的继承和聚合

Maven的继承和聚合 

在子项目中重新指定需要的依赖,删除范围和版本号(从父工程那里取得,但是如果想要使用不同的,可以直接声明出来) 

Maven的继承和聚合 

 

聚合 

 为什么要使用聚合

 将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进 行 clean 操作。而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作。

如何配置聚合 

在总的聚合工程中使用 modules/module 标签组合,指定模块工程的相对路径即可

Maven的继承和聚合