up:: Maven MOC tag::继承 dates:: 2023-09-08

继承如同 Java 的继承一般,子类继承父类的属性,最大程度的消除重复。

假如有 A,B两个模块都需要 spring-core 2.0 版本的依赖,正常的做法就是在两个模块中分别声明同一个 spring-core 依赖。

使用继承消除重复配置,新建一个模块 C,修改打包方式为 pom (与Maven 聚合操作一致),接着引入 spring-core 依赖,即可。这时 A,B 模块只需要继承 C 的 pom 即可,代码如下。

<parent>
  <groupId>C 模块groupId</groupId>
  <artifactId>C 模块artifactId</artifactId>
  <version>C 模块version</version>
  <relativePath>C 模块pom.xml路径(相对路径)</relativePath>
</parent>

引入 C 模块的坐标信息,并使用 relativePath 指向 C 模块的 pom 文件路径。Maven 会首先根据 relativePath 找 pom,找不到就去本地仓库找,如果不配置 realtivePath,那默认值是 ../pom.xml,也就是说 Maven 默认父模块在当前模块的上一层目录

在上面的例子中 A,B 模块可以不用声明 gruopId 和 version,这些信息都从 C 模块中继承过来了,如果子模块要使用自己的 groupId 和 version 直接显示的声明即可。