【Maven】聚合和继承

来源:互联网 发布:电钢琴教学软件 编辑:程序博客网 时间:2024/04/30 21:47

  Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性能够帮助抽取各模块相同的依赖和插件配置。在简化POM的同时,还能促进各个模块配置的一致性。


聚合

  我们想一次构建两个项目,而不是到两个模块的目录下分别执行mvn命令,Maven聚合(多模块)这一特性为该需求服务;

  用于聚合的模块,本身是一个Maven项目,有自己的POM文件;它的打包packaging的值必须为pom,否则无法构建;

  modules:实现聚合的最核心的配置,它的值是相对于当前POM的相对目录;

  聚合模块中仅是一个pom.xml文件,帮助聚合其他模块构建的工具,本身无实质的内容;

  执行mvn clean install命令时,Maven会解析聚合模块的POM,分析要构建的模块,并计算出一个反应堆构建顺序(Reactor Build Order),然后根据这个顺序依次构建各个模块;反应堆的所有模块组成的一个构建结构。


继承:

  消除重复,避免重复带来的多余的劳动和更多的潜在的问题,使用继承来消除重复;

  在父POM中声明一些配置供子POM继承,实现"一处声明,多处使用"的目的。

  父模块的packaging为pom。

  Maven提供的<dependencyManagement>元素既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性。在<dependencyManagement>元素下的依赖声明不会引入实际的依赖,但是它能够约束dependencies下的依赖使用。


依赖与继承

  多模块Maven项目中的聚合与继承目的是完全不同的。前者:为了方便快速构建项目,后者:为了消除重复配置;

  聚合模块:它知道哪些被聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在;

  聚成的父POM,它不知道哪些子模块继承于它,但哪些子模块必须知道自己的父POM是什么;

  聚合和继承的POM的packaging都是必须pom,同时,聚合模块与继承关系中的父模块除了POM之外都没有实质的内容;



0 0