当前位置: 首页 > ds >正文

【Maven】子POM与父POM

文章目录

  • 子POM与父POM
    • 一、继承的内容
      • 1.子 POM 可以继承父 POM 的内容
      • 2.子 POM 中声明相同配置
        • 覆盖规则示例

子POM与父POM

一、继承的内容

在 Maven 项目结构中,子 POM(子模块)可以继承父 POM 的很多配置。合理使用继承机制可以大大减少重复配置,让项目更清晰、易维护。


1.子 POM 可以继承父 POM 的内容

继承项说明
dependencyManagement父 POM 统一管理依赖版本,子 POM 只需声明依赖,不用写版本号。
pluginManagement父 POM 统一管理插件版本,子 POM 引用时可省略版本号。
build 配置包括编译器配置、打包方式(jar/war)、资源处理等。
properties父 POM 定义的属性(如 java.version),子 POM 可直接引用。
repositoriesMaven 仓库地址继承,无需每个子 POM重复配置。
pluginRepositories插件仓库地址继承。
dependencies父 POM直接声明的依赖,子 POM默认继承。
build.plugins父 POM 配置的插件,子 POM默认继承。
reporting站点生成(如 Maven Site Plugin)相关配置。
distributionManagement发布地址、仓库配置继承。

注意modules 列表是父 POM 聚合子模块的,不属于继承范畴,是聚合关系。


2.子 POM 中声明相同配置

如果子 POM 中声明了已经从父 POM 继承的内容,会优先使用子 POM自己的配置,覆盖父 POM 的设置。

覆盖规则示例

1.依赖覆盖

<!-- 父 POM中 -->
<dependencyManagement><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.6.4</version></dependency>
</dependencyManagement><!-- 子 POM中 -->
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.7.0</version> <!-- 子POM显式指定版本,覆盖父POM --></dependency>
</dependencies>
  1. 打包方式覆盖
<!-- 父 POM中 -->
<packaging>jar</packaging><!-- 子 POM中 -->
<packaging>war</packaging> <!-- 子POM重新定义,最终是war包 -->

3.插件配置覆盖

<!-- 父 POM中 -->
<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build><!-- 子 POM中 -->
<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>17</source><target>17</target></configuration></plugin></plugins>
</build>
http://www.xdnf.cn/news/2917.html

相关文章:

  • C++23/26 静态反射机制深度解析:编译时元编程的新纪元
  • 一文读懂布隆过滤器:特性、应用与局限
  • docker存储
  • 在g2o图优化框架中,顶点(Vertex)和边(Edge)的定义与功能的区别
  • 基于Python镜像创建docker镜像时pip install一直出现NewConnectionError的一种解决办法
  • AGV、AMR机器人控制器x86/RK3588/NV各有什么优劣势?
  • 【Stable Diffusion】使用教程:从原理到实战,全面掌握AI绘画
  • VMware安装Ubuntu实战分享
  • 白光干涉技术在高精度表面形貌测量中的实际应用
  • 永磁同步电机控制算法-转速环电流环SMC控制器
  • 漫反射实现+逐像素漫反射+逐像素漫反射实现
  • 机器学习分类模型性能评估:应对类别不平衡的策略与指标
  • 数据结构 RBT 插入操作的 Python 代码实现
  • EMB量产首航!炯熠电子引领「线控底盘革命」
  • SOLIDWORKS修改模型默认颜色教程
  • Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(一)
  • WebXR教学 06 项目4 跳跃小游戏
  • for(auto it: vec)和for(auto it: vec)的区别以及使用场景
  • Java—— Arrays工具类及Lambda表达式
  • 联合体union的特殊之处
  • 软件测试实验报告3 | 自动化测试工具的基本操作
  • 局域网传文件——基于flask实现
  • 9.Three.js中 ArrayCamera 多视角相机详解+示例代码
  • RISCV学习(5)GD32VF103 MCU架构了解
  • 修改Hosts文件没有生效的解决办法
  • LM393比较器的比较翻转电压不对
  • seaborn数据统计可视化-介绍
  • 需要掌握的前端安全概念以及实操
  • 【React Native】精通 react native
  • 第十四届蓝桥杯Scratch03月stema选拔赛——九九乘法表