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

Maven-继承与聚合 - 实践

Maven-继承与聚合

继承

Maven不支持多继承,一个Maven项目中只能继承一个父工程,但是Maven可以通过多重继承来达到多继承的效果。

  1. 创建父工程,在pom.xml中声明父工程的打包方式为pom(不设置打包方式默认为jar)。父工程或聚合工程模块中不写代码,仅进行依赖管理,且打包方式应设为pom。
<packaging>pom</packaging>
  1. 在父工程中配置各个工程共有的依赖,子工程会自动继承父工程的依赖。
  2. 在子工程的pom.xml中通过<parent></parent>标签声明其父工程,配置继承关系。
<parent>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<relativePath>....</relativePath><!--relativePath标签用来指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程) --></parent>

自定义属性

当然我们也可以在pom.xml文件中通过<properties>标签来自定义属性并通过${...}的方式引用自定义标签内的属性。

  1. 自定义属性
<properties><!--自定义属性lombock.version--><lombok.version>1.18.30</lombok.version></properties>
  1. 引用自定义属性
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version><!--通过${}引用自定义属性lombock.version--></dependency>

版本锁定

我们可以在父工程的pom文件中通过标签来统一管理依赖的版本。

<!--统一管理依赖版本--><dependencyManagement><dependencies><dependency><groupId>...</groupId><artifactId>...</artifactId><version>...</version></dependency></dependencies></dependencyManagement>

该标签并不会将对应的依赖直接引入,而是只对依赖的版本进行统一管理,所以子工程在使用这个依赖的时候,仍需要引入对应依赖,只是可以不指定版本。

聚合

通过maven提供的聚合功能,我们能够一件构建项目,而不需要再去考虑各个模块打包间的依赖关系,maven的聚合功能会自动根据当前聚合工程中各个子模块的依赖关系先后进行打包操作。

聚合工程与父工程一致只有一个pom文件,并且需将打包方式也设置为pom,因此常将两个工程进行合并。需要在聚合工程(也就是父工程中)通过<moudules>标签将需要聚合的子模块聚合。

<!-- 聚合其他模块 --><modules><module>...</module><module>...</module><module>...</module><!-- <module> 标签中填写需要聚合模块的位置 --></modules>
http://www.gsyq.cn/news/27503.html

相关文章:

  • 千疮百孔的心被恨与悲彻底剥离 Kill my memory 让我将快乐全忘记
  • 权威调研榜单:天津全屋定制整体橱柜方案TOP4榜单好评深度解析
  • 单时段机组组合优化的粒子群算法实现(MATLAB)
  • SketchUp 2022-2025 坯子插件库 v3.2.6官方正式版下载安装教程
  • 2025 年固化剂生产厂家最新推荐排行榜:聚焦国内优质厂商,助力选购高性价比混凝土及厂房用固化剂
  • 广义串并联图
  • 第八章 内存马分析-java01-nacos
  • 2025 种植棚/养殖棚/工程/羊肚菌/保温/园林/加厚/绿化/草苫子推荐榜:济宁泽萌草制品 5 星领跑,适配大棚 / 混凝土 / 园艺多场景需求
  • AI不是魔法,而是算力+算法+数据的平衡艺术!
  • 雪碧图动画实例 - 教程
  • 2025/10/22
  • 2025 年钢管厂家最新推荐榜:覆盖精密钢管、汽车钢管、高强钢钢管等品类,为下游采购企业提供权威选品参考
  • 生成函数入门
  • ubuntu24.04 server 版本安装xfce 使用web novnc 远程桌面
  • 第一个 AI 应用
  • 调用ack集群 api 接口删除Terminating状态的资源
  • 软件工程课程第二次团队作业
  • TabControl控件
  • VS2026 使用 WebDeploy 发布到 IIS - Jeff
  • 2025 激光灯厂家最新推荐榜:全方位测评核心实力与潜力,甄选优质供应商实用指南
  • SpringBoot3 集成Junit4 - 实践
  • 详细介绍:Spark Shuffle:分布式计算的数据重分布艺术
  • 2025 年火焰检测器生产厂家最新推荐权威排名:涵盖防爆 / 一体化 / 紫外线 / 离子 / 红外线 / 红紫外复合 / 智能型,多维度解析助力企业精准选型
  • FPGA控制RGMII接口PHY芯片基础
  • 2025 年气泵厂家最新推荐权威榜单:小型 / 微型 / 耐腐蚀 / 微型真空 / 微型隔膜 / 防爆气泵公司选购指南
  • 冰川之国破例:冰岛首次发现蚊子,气候变化敲响警钟
  • 2025 年度茶叶行业优质厂家权威榜单:最新推荐全解析,小青柑 / 普洱等好茶选品指南
  • 卸载 macOS 上所有版本的 Python
  • win11暂停更新
  • 视频汇聚平台EasyCVR级联播放偶发失败排查:TCP主动模式下的3秒超时响应差