你分得清楚Maven的聚合和继承吗?

在实际项目中,通常顶级项目的pom文件 即是聚合 pom,又是父 pom。

聚合

  • 目的:管理多模块项目
  • 语法:两个父子标签

    1. <modules>
    2. <module>mail</module>
    3. <module>account</module>
    4. </modules>
  • 查询路径:默认在父项目路径内查找子项目,当子项目与父项目同级,路径如下:

    1. <modules>
    2. <module>../account</module>
    3. <module>../mail</module>
    4. </modules>

继承

  • 目的:消除重复依赖、统一版本(版本仲裁)
  • 语法:标签

    1. <parent>
    2. <artifactId>taobao-parent</artifactId>
    3. <groupId>com.chenshuyi</groupId>
    4. <version>1.0-SNAPSHOT</version>
    5. </parent>
  • 父项目中可以被子项目继承的标签元素:

    • groupId
    • version
    • properties
    • dependencies
    • dependencyManagement
    • build
    • description
    • organization
    • inceptionYear
    • url
    • developers
    • contributors
    • distributionManagement
    • issueManagement
    • ciManagement
    • scm
    • mailingLists
    • repositories
    • reporting