1.继承
① 为何需要继承?
我们知道Maven工程之间可以完成依赖的传递性,实际上就是各个jar包和war包之间存在依赖的传递性,但是必须是compile范围的依赖才具有传递性,才可以根据传递性统一的管理一个依赖的版本。而对于test范围的依赖,只是孤零零的存在于某个项目中,各个项目中的依赖版本可能不同,容易造成问题,所以test范围的依赖的统一版本的问题依靠依赖的传递性是无法解决的。所以我们使用继承这个概念来解决。
② 怎么实现继承
继承,顾名思义,存在着父子关系。我们需要定义一个统一管理某些test范围依赖的父工程,它打包的方式是pom。在它的pom文件中声明test范围的依赖的坐标。然后在子工程中第一以<parent>坐标</parent>的形式声明父工程的坐标并且声明test范围的依赖坐标,子工程中的也要声明test范围的依赖的坐标,但是需要注意的是必须将坐标中的版本号给去掉,才可以完成统一管理test范围依赖的版本。
2.聚合
① 为何需要聚合
我们最终都要讲各个Maven工程安装到仓库中,但是由于存在继承关系使得我们必选先安装父工程才可以安装子工程,否则会报错。而且必须一个一个的install。那么能不能有一种更好的方式完成一键安装呢?聚合工程就可以完成。
② 怎么实现聚合
我们首先要定义一个打包方式为pom的工程当做聚合工程,并且在其中用<models><model></model></models>标签的形式将一个一个Maven工程聚合进来,不必在意在model中的顺序,它会自动识别父工程来先完成安装。然后只有将这个聚合工程install那么其中聚合进来的工程就都可以顺利的install了。
需要注意的是:在实际项目开发工程中,我们可以使用同一个pom打包方式的工程来充当父工程和聚合工程。即效果是其中的pom.xml文件包含test范围的依赖和models标签将各个Maven工程聚合进来。